WordPress at a glance
function is not described

_wp_put_post_revision() WP 2.6.0

Inserts post data into the posts table as a post revision.

Hooks in function
Return

Int/WP_Error. WP_Error or 0 if error, new revision ID if success.

Usage

_wp_put_post_revision( $post, $autosave );
$post(int/WP_Post/array/null)
Post ID, post object OR post array.
Default: null
$autosave(true/false)
Is the revision an autosave?
Default: false

Code of wp put post revision: wp-includes/revision.php VER 5.0.3

<?php
function _wp_put_post_revision( $post = null, $autosave = false ) {
	if ( is_object($post) )
		$post = get_object_vars( $post );
	elseif ( !is_array($post) )
		$post = get_post($post, ARRAY_A);

	if ( ! $post || empty($post['ID']) )
		return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );

	if ( isset($post['post_type']) && 'revision' == $post['post_type'] )
		return new WP_Error( 'post_type', __( 'Cannot create a revision of a revision' ) );

	$post = _wp_post_revision_data( $post, $autosave );
	$post = wp_slash($post); //since data is from db

	$revision_id = wp_insert_post( $post );
	if ( is_wp_error($revision_id) )
		return $revision_id;

	if ( $revision_id ) {
		/**
		 * Fires once a revision has been saved.
		 *
		 * @since 2.6.0
		 *
		 * @param int $revision_id Post revision ID.
		 */
		do_action( '_wp_put_post_revision', $revision_id );
	}

	return $revision_id;
}