svn_client_merge5

Function svn_client_merge5 

Source
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.