pub unsafe extern "C" fn svn_client_merge5(
source1: *const c_char,
revision1: *const svn_opt_revision_t,
source2: *const c_char,
revision2: *const svn_opt_revision_t,
target_wcpath: *const c_char,
depth: svn_depth_t,
ignore_mergeinfo: svn_boolean_t,
diff_ignore_ancestry: svn_boolean_t,
force_delete: svn_boolean_t,
record_only: svn_boolean_t,
dry_run: svn_boolean_t,
allow_mixed_rev: svn_boolean_t,
merge_options: *const apr_array_header_t,
ctx: *mut svn_client_ctx_t,
pool: *mut apr_pool_t,
) -> *mut svn_error_t
Expand description
Merge changes from @a source1/@a revision1 to @a source2/@a revision2 into the working-copy path @a target_wcpath.
@a source1 and @a source2 are either URLs that refer to entries in the repository, or paths to entries in the working copy.
By “merging”, we mean: apply file differences using svn_wc_merge(), and schedule additions & deletions when appropriate.
@a source1 and @a source2 must both represent the same node kind – that is, if @a source1 is a directory, @a source2 must also be, and if @a source1 is a file, @a source2 must also be.
If either @a revision1 or @a revision2 has an unspecified' or unrecognized
kind’, return #SVN_ERR_CLIENT_BAD_REVISION.
If @a depth is #svn_depth_infinity, merge fully recursively. Else if #svn_depth_immediates, merge changes at most to files that are immediate children of @a target_wcpath and to directory properties of @a target_wcpath and its immediate subdirectory children. Else if #svn_depth_files, merge at most to immediate file children of @a target_wcpath and to @a target_wcpath itself. Else if #svn_depth_empty, apply changes only to @a target_wcpath (i.e., directory property changes only)
If @a depth is #svn_depth_unknown, use the depth of @a target_wcpath.
If @a ignore_mergeinfo is true, disable merge tracking, by treating the two sources as unrelated even if they actually have a common ancestor.
If @a diff_ignore_ancestry is true, diff unrelated nodes as if related: that is, diff the ‘left’ and ‘right’ versions of a node as if they were related (if they are the same kind) even if they are not related. Otherwise, diff unrelated items as a deletion of one thing and the addition of another.
If @a force_delete is false and the merge involves deleting a file whose content differs from the source-left version, or a locally modified directory, or an unversioned item, then the operation will fail. If @a force_delete is true then all such items will be deleted.
@a merge_options (an array of const char *), if non-NULL, is used to pass additional command line arguments to the merge processes (internal or external). @see svn_diff_file_options_parse().
If @a ctx->notify_func2 is non-NULL, then call @a ctx->notify_func2 with @a ctx->notify_baton2 once for each merged target, passing the target’s local path.
If @a record_only is TRUE, the merge is performed, but is limited only to mergeinfo property changes on existing paths in @a target_wcpath.
If @a dry_run is TRUE, the merge is carried out, and full notification feedback is provided, but the working copy is not modified.
If allow_mixed_rev is @c FALSE, and @a merge_target is a mixed-revision working copy, raise @c SVN_ERR_CLIENT_MERGE_UPDATE_REQUIRED. Because users rarely intend to merge into mixed-revision working copies, it is recommended to set this parameter to FALSE by default unless the user has explicitly requested a merge into a mixed-revision working copy.
The authentication baton cached in @a ctx is used to communicate with the repository.
@since New in 1.8.