pub unsafe extern "C" fn svn_client_move7(
src_paths: *const apr_array_header_t,
dst_path: *const c_char,
move_as_child: svn_boolean_t,
make_parents: svn_boolean_t,
allow_mixed_revisions: svn_boolean_t,
metadata_only: svn_boolean_t,
revprop_table: *const apr_hash_t,
commit_callback: svn_commit_callback2_t,
commit_baton: *mut c_void,
ctx: *mut svn_client_ctx_t,
pool: *mut apr_pool_t,
) -> *mut svn_error_tExpand description
Move @a src_paths to @a dst_path.
@a src_paths is an array of (const char *) paths – either all WC paths or all URLs – of versioned items. If multiple @a src_paths are given, @a dst_path must be a directory and @a src_paths will be moved as children of @a dst_path.
If @a src_paths are repository URLs:
-
@a dst_path must also be a repository URL.
-
The authentication baton in @a ctx and @a ctx->log_msg_func/@a ctx->log_msg_baton are used to commit the move.
-
The move operation will be immediately committed.
If @a src_paths are working copy paths:
-
@a dst_path must also be a working copy path.
-
@a ctx->log_msg_func3 and @a ctx->log_msg_baton3 are ignored.
-
This is a scheduling operation. No changes will happen to the repository until a commit occurs. This scheduling can be removed with svn_client_revert2(). If one of @a src_paths is a file it is removed from the working copy immediately. If one of @a src_path is a directory it will remain in the working copy but all the files, and unversioned items, it contains will be removed.
If @a src_paths has only one item, attempt to move it to @a dst_path. If @a move_as_child is TRUE and @a dst_path already exists, attempt to move the item as a child of @a dst_path. If @a move_as_child is FALSE and @a dst_path already exists, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
If @a src_paths has multiple items, and @a move_as_child is TRUE, all @a src_paths are moved as children of @a dst_path. If any child of @a dst_path already exists with the same name any item in @a src_paths, fail with #SVN_ERR_ENTRY_EXISTS if @a dst_path is a working copy path and #SVN_ERR_FS_ALREADY_EXISTS if @a dst_path is a URL.
If @a src_paths has multiple items, and @a move_as_child is FALSE, fail with #SVN_ERR_CLIENT_MULTIPLE_SOURCES_DISALLOWED.
If @a make_parents is TRUE, create any non-existent parent directories also. Otherwise, the parent of @a dst_path must already exist.
If @a allow_mixed_revisions is @c FALSE, #SVN_ERR_WC_MIXED_REVISIONS will be raised if the move source is a mixed-revision subtree. If @a allow_mixed_revisions is TRUE, a mixed-revision move source is allowed but the move will degrade to a copy and a delete without local move tracking. This parameter should be set to FALSE except where backwards compatibility to svn_client_move6() is required.
If @a metadata_only is @c TRUE and moving a file in a working copy, everything in the metadata is updated as if the node is moved, but the actual disk move operation is not performed. This feature is useful for clients that want to keep the working copy in sync while the actual working copy is updated by some other task.
If non-NULL, @a revprop_table is a hash table holding additional, custom revision properties (const char * names mapped to svn_string_t * values) to be set on the new revision in the event that this is a committing operation. This table cannot contain any standard Subversion properties.
@a ctx->log_msg_func3/@a ctx->log_msg_baton3 are a callback/baton combo that this function can use to query for a commit log message when one is needed.
If @a ctx->notify_func2 is non-NULL, then for each item moved, call @a ctx->notify_func2 with the @a ctx->notify_baton2 twice, once to indicate the deletion of the moved thing, and once to indicate the addition of the new location of the thing.
§Is this really true? What about svn_wc_notify_commit_replaced()?
If @a commit_callback is non-NULL, then for each successful commit, call @a commit_callback with @a commit_baton and a #svn_commit_info_t for the commit.
@since New in 1.8.