Loading...
Searching...
No Matches
Merge changes between branches.
Client working copy management

## Functions

svn_error_t *

svn_client_get_merging_summary (svn_boolean_t *needs_reintegration, const char **yca_url, svn_revnum_t *yca_rev, const char **base_url, svn_revnum_t *base_rev, const char **right_url, svn_revnum_t *right_rev, const char **target_url, svn_revnum_t *target_rev, const char **repos_root_url, const char *source_path_or_url, const svn_opt_revision_t *source_revision, const char *target_path_or_url, const svn_opt_revision_t *target_revision, svn_client_ctx_t *ctx, apr_pool_t *result_pool, apr_pool_t *scratch_pool)

| Get information about the state of merging between two branches.

svn_error_t *

svn_client_merge5 (const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_depth_t depth, svn_boolean_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, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)

| Merge changes from source1/revision1 to source2/revision2 into the working-copy path target_wcpath.

svn_error_t *

svn_client_merge4 (const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)

| Similar to svn_client_merge5(), but the single ignore_ancestry parameter maps to both `ignore_mergeinfo` and `diff_ignore_ancestry`.
svn_error_t * | svn_client_merge3 (const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t record_only, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_merge4(), but with allow_mixed_rev set to `TRUE`.
svn_error_t * | svn_client_merge2 (const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_merge3(), but with record_only set to `FALSE`, and depth set according to recurse: if recurse is TRUE, set depth to svn_depth_infinity, if recurse is FALSE, set depth to svn_depth_files.
svn_error_t * | svn_client_merge (const char *source1, const svn_opt_revision_t *revision1, const char *source2, const svn_opt_revision_t *revision2, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_merge2(), but with merge_options set to NULL.
svn_error_t * | svn_client_merge_reintegrate (const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Perform a reintegration merge of source_path_or_url at source_peg_revision into target_wcpath.

svn_error_t *

svn_client_merge_peg5 (const char *source_path_or_url, const apr_array_header_t *ranges_to_merge, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_depth_t depth, svn_boolean_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, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)

| Merge changes from the source branch identified by source_path_or_url in peg revision source_peg_revision, into the target branch working copy at target_wcpath.

svn_error_t *

svn_client_merge_peg4 (const char *source_path_or_url, const apr_array_header_t *ranges_to_merge, const svn_opt_revision_t *source_peg_revision, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force_delete, svn_boolean_t record_only, svn_boolean_t dry_run, svn_boolean_t allow_mixed_rev, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)

| Similar to svn_client_merge_peg5(), but automatic merge is not available (ranges_to_merge must not be NULL), and the single ignore_ancestry parameter maps to both `ignore_mergeinfo` and `diff_ignore_ancestry`.
svn_error_t * | svn_client_merge_peg3 (const char *source, const apr_array_header_t *ranges_to_merge, const svn_opt_revision_t *peg_revision, const char *target_wcpath, svn_depth_t depth, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t record_only, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_merge_peg4(), but with allow_mixed_rev set to `TRUE`.
svn_error_t * | svn_client_merge_peg2 (const char *source, const svn_opt_revision_t *revision1, const svn_opt_revision_t *revision2, const svn_opt_revision_t *peg_revision, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, const apr_array_header_t *merge_options, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_merge_peg3(), but with record_only set to `FALSE`, and depth set according to recurse: if recurse is TRUE, set depth to svn_depth_infinity, if recurse is FALSE, set depth to svn_depth_files.
svn_error_t * | svn_client_merge_peg (const char *source, const svn_opt_revision_t *revision1, const svn_opt_revision_t *revision2, const svn_opt_revision_t *peg_revision, const char *target_wcpath, svn_boolean_t recurse, svn_boolean_t ignore_ancestry, svn_boolean_t force, svn_boolean_t dry_run, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_merge_peg2(), but with merge_options set to NULL.
svn_error_t * | svn_client_suggest_merge_sources (apr_array_header_t **suggestions, const char *path_or_url, const svn_opt_revision_t *peg_revision, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Set suggestions to an ordered array of `const` char * potential merge sources (expressed as full repository URLs) for path_or_url at peg_revision.
svn_error_t * | svn_client_mergeinfo_get_merged (apr_hash_t **mergeinfo, const char *path_or_url, const svn_opt_revision_t *peg_revision, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Get the mergeinfo for a single target node (ignoring any subtrees).

svn_error_t *

svn_client_mergeinfo_log2 (svn_boolean_t finding_merged, const char *target_path_or_url, const svn_opt_revision_t *target_peg_revision, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, const svn_opt_revision_t *source_start_revision, const svn_opt_revision_t *source_end_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, svn_depth_t depth, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)

| Describe the revisions that either have or have not been merged from one source branch (or subtree) into another.

svn_error_t *

svn_client_mergeinfo_log (svn_boolean_t finding_merged, const char *target_path_or_url, const svn_opt_revision_t *target_peg_revision, const char *source_path_or_url, const svn_opt_revision_t *source_peg_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, svn_depth_t depth, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *scratch_pool)

| Similar to svn_client_mergeinfo_log2(), but with source_start_revision and source_end_revision always of kind `svn_opt_revision_unspecified`;.
svn_error_t * | svn_client_mergeinfo_log_merged (const char *path_or_url, const svn_opt_revision_t *peg_revision, const char *merge_source_path_or_url, const svn_opt_revision_t *src_peg_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_mergeinfo_log(), but finds only merged revisions and always operates at depth svn_depth_empty.
svn_error_t * | svn_client_mergeinfo_log_eligible (const char *path_or_url, const svn_opt_revision_t *peg_revision, const char *merge_source_path_or_url, const svn_opt_revision_t *src_peg_revision, svn_log_entry_receiver_t receiver, void *receiver_baton, svn_boolean_t discover_changed_paths, const apr_array_header_t *revprops, svn_client_ctx_t *ctx, apr_pool_t *pool)
| Similar to svn_client_mergeinfo_log(), but finds only eligible revisions and always operates at depth svn_depth_empty.

## Detailed Description

## Function Documentation

## svn_client_get_merging_summary()

svn_error_t * svn_client_get_merging_summary | ( | svn_boolean_t * | needs_reintegration,
|  | const char ** | yca_url,
|  | svn_revnum_t * | yca_rev,
|  | const char ** | base_url,
|  | svn_revnum_t * | base_rev,
|  | const char ** | right_url,
|  | svn_revnum_t * | right_rev,
|  | const char ** | target_url,
|  | svn_revnum_t * | target_rev,
|  | const char ** | repos_root_url,
|  | const char * | source_path_or_url,
|  | const svn_opt_revision_t * | source_revision,
|  | const char * | target_path_or_url,
|  | const svn_opt_revision_t * | target_revision,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | result_pool,
|  | apr_pool_t * | scratch_pool
| ) |  |

Get information about the state of merging between two branches.

The source is specified by source_path_or_url at source_revision. The target is specified by target_path_or_url at target_revision, which refers to either a WC or a repository location.

Set *needs_reintegration to true if an automatic merge from source to target would be a reintegration merge: that is, if the last automatic merge was in the opposite direction; or to false otherwise.

Set *yca_url, *yca_rev, *base_url, *base_rev, *right_url, *right_rev, *target_url, *target_rev to the repository locations of, respectively: the youngest common ancestor of the branches, the base chosen for 3-way merge, the right-hand side of the source diff, and the target.

Set repos_root_url to the URL of the repository root. This is a common prefix of all four URL outputs.

Allocate the results in result_pool. Any of the output pointers may be NULL if not wanted.

Since
  New in 1.8.

## svn_client_merge()

svn_error_t * svn_client_merge | ( | const char * | source1,
|  | const svn_opt_revision_t * | revision1,
|  | const char * | source2,
|  | const svn_opt_revision_t * | revision2,
|  | const char * | target_wcpath,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force,
|  | svn_boolean_t | dry_run,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge2(), but with merge_options set to NULL.

Deprecated:
  Provided for backwards compatibility with the 1.3 API.

## svn_client_merge2()

svn_error_t * svn_client_merge2 | ( | const char * | source1,
|  | const svn_opt_revision_t * | revision1,
|  | const char * | source2,
|  | const svn_opt_revision_t * | revision2,
|  | const char * | target_wcpath,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force,
|  | svn_boolean_t | dry_run,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge3(), but with record_only set to `FALSE`, and depth set according to recurse: if recurse is TRUE, set depth to svn_depth_infinity, if recurse is FALSE, set depth to svn_depth_files.

Deprecated:
  Provided for backward compatibility with the 1.4 API.

Since
  New in 1.4.

## svn_client_merge3()

svn_error_t * svn_client_merge3 | ( | const char * | source1,
|  | const svn_opt_revision_t * | revision1,
|  | const char * | source2,
|  | const svn_opt_revision_t * | revision2,
|  | const char * | target_wcpath,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force,
|  | svn_boolean_t | record_only,
|  | svn_boolean_t | dry_run,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge4(), but with allow_mixed_rev set to `TRUE`.

The force parameter maps to the `force_delete` parameter of svn_client_merge4().

Deprecated:
  Provided for backward compatibility with the 1.6 API.

Since
  New in 1.5.

## svn_client_merge4()

svn_error_t * svn_client_merge4 | ( | const char * | source1,
|  | const svn_opt_revision_t * | revision1,
|  | const char * | source2,
|  | const svn_opt_revision_t * | revision2,
|  | const char * | target_wcpath,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force_delete,
|  | svn_boolean_t | record_only,
|  | svn_boolean_t | dry_run,
|  | svn_boolean_t | allow_mixed_rev,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge5(), but the single ignore_ancestry parameter maps to both `ignore_mergeinfo` and `diff_ignore_ancestry`.

Deprecated:
  Provided for backward compatibility with the 1.7 API.

Since
  New in 1.7.

## svn_client_merge5()

svn_error_t * svn_client_merge5 | ( | const char * | source1,
|  | const svn_opt_revision_t * | revision1,
|  | const char * | source2,
|  | const svn_opt_revision_t * | revision2,
|  | const char * | target_wcpath,
|  | svn_depth_t | depth,
|  | svn_boolean_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,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Merge changes from source1/revision1 to source2/revision2 into the working-copy path target_wcpath.

source1 and 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.

source1 and source2 must both represent the same node kind – that is, if source1 is a directory, source2 must also be, and if source1 is a file, source2 must also be.

If either revision1 or revision2 has an ‘unspecified’ or unrecognized ‘kind’, return SVN_ERR_CLIENT_BAD_REVISION.

If depth is svn_depth_infinity, merge fully recursively. Else if svn_depth_immediates, merge changes at most to files that are immediate children of target_wcpath and to directory properties of target_wcpath and its immediate subdirectory children. Else if svn_depth_files, merge at most to immediate file children of target_wcpath and to target_wcpath itself. Else if svn_depth_empty, apply changes only to target_wcpath (i.e., directory property changes only)

If depth is svn_depth_unknown, use the depth of target_wcpath.

If ignore_mergeinfo is true, disable merge tracking, by treating the two sources as unrelated even if they actually have a common ancestor.

If 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 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 force_delete is true then all such items will be deleted.

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 also
  svn_diff_file_options_parse().

If ctx->notify_func2 is non-NULL, then call ctx->notify_func2 with ctx->notify_baton2 once for each merged target, passing the target's local path.

If record_only is TRUE, the merge is performed, but is limited only to mergeinfo property changes on existing paths in target_wcpath.

If 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 `FALSE`, and merge_target is a mixed-revision working copy, raise `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 ctx is used to communicate with the repository.

Since
  New in 1.8.

## svn_client_merge_peg()

svn_error_t * svn_client_merge_peg | ( | const char * | source,
|  | const svn_opt_revision_t * | revision1,
|  | const svn_opt_revision_t * | revision2,
|  | const svn_opt_revision_t * | peg_revision,
|  | const char * | target_wcpath,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force,
|  | svn_boolean_t | dry_run,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge_peg2(), but with merge_options set to NULL.

Deprecated:
  Provided for backwards compatibility with the 1.3 API.

Since
  New in 1.1.

## svn_client_merge_peg2()

svn_error_t * svn_client_merge_peg2 | ( | const char * | source,
|  | const svn_opt_revision_t * | revision1,
|  | const svn_opt_revision_t * | revision2,
|  | const svn_opt_revision_t * | peg_revision,
|  | const char * | target_wcpath,
|  | svn_boolean_t | recurse,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force,
|  | svn_boolean_t | dry_run,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge_peg3(), but with record_only set to `FALSE`, and depth set according to recurse: if recurse is TRUE, set depth to svn_depth_infinity, if recurse is FALSE, set depth to svn_depth_files.

Deprecated:
  Provided for backwards compatibility with the 1.4 API.

Since
  New in 1.4.

## svn_client_merge_peg3()

svn_error_t * svn_client_merge_peg3 | ( | const char * | source,
|  | const apr_array_header_t * | ranges_to_merge,
|  | const svn_opt_revision_t * | peg_revision,
|  | const char * | target_wcpath,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force,
|  | svn_boolean_t | record_only,
|  | svn_boolean_t | dry_run,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge_peg4(), but with allow_mixed_rev set to `TRUE`.

The force parameter maps to the `force_delete` parameter of svn_client_merge_peg4().

Deprecated:
  Provided for backward compatibility with the 1.6 API.

Since
  New in 1.5.

## svn_client_merge_peg4()

svn_error_t * svn_client_merge_peg4 | ( | const char * | source_path_or_url,
|  | const apr_array_header_t * | ranges_to_merge,
|  | const svn_opt_revision_t * | source_peg_revision,
|  | const char * | target_wcpath,
|  | svn_depth_t | depth,
|  | svn_boolean_t | ignore_ancestry,
|  | svn_boolean_t | force_delete,
|  | svn_boolean_t | record_only,
|  | svn_boolean_t | dry_run,
|  | svn_boolean_t | allow_mixed_rev,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_merge_peg5(), but automatic merge is not available (ranges_to_merge must not be NULL), and the single ignore_ancestry parameter maps to both `ignore_mergeinfo` and `diff_ignore_ancestry`.

Deprecated:
  Provided for backward compatibility with the 1.7 API.

Since
  New in 1.7.

## svn_client_merge_peg5()

svn_error_t * svn_client_merge_peg5 | ( | const char * | source_path_or_url,
|  | const apr_array_header_t * | ranges_to_merge,
|  | const svn_opt_revision_t * | source_peg_revision,
|  | const char * | target_wcpath,
|  | svn_depth_t | depth,
|  | svn_boolean_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,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Merge changes from the source branch identified by source_path_or_url in peg revision source_peg_revision, into the target branch working copy at target_wcpath.

If ranges_to_merge is NULL then perform an automatic merge of all the eligible changes up to source_peg_revision. If the merge required is a reintegrate merge, then return an error if the WC has mixed revisions, local modifications and/or switched subtrees; if the merge is determined to be of the non-reintegrate kind, then return an error if allow_mixed_rev is false and the WC contains mixed revisions.

If ranges_to_merge is not NULL then merge the changes specified by the revision ranges in ranges_to_merge, or, when honouring mergeinfo, only the eligible parts of those revision ranges. ranges_to_merge is an array of `svn_opt_revision_range_t *` ranges. These ranges may describe additive and/or subtractive merge ranges, they may overlap fully or partially, and/or they may partially or fully negate each other. This rangelist is not required to be sorted. If any revision in the list of provided ranges has an ‘unspecified’ or unrecognized ‘kind’, return SVN_ERR_CLIENT_BAD_REVISION.

If ranges_to_merge is an empty array, then do nothing.

All other options are handled identically to svn_client_merge5().

Since
  New in 1.8.

## svn_client_merge_reintegrate()

svn_error_t * svn_client_merge_reintegrate | ( | const char * | source_path_or_url,
|  | const svn_opt_revision_t * | source_peg_revision,
|  | const char * | target_wcpath,
|  | svn_boolean_t | dry_run,
|  | const apr_array_header_t * | merge_options,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Perform a reintegration merge of source_path_or_url at source_peg_revision into target_wcpath.

target_wcpath must be a single-revision, svn_depth_infinity, pristine, unswitched working copy – in other words, it must reflect a single revision tree, the "target". The mergeinfo on source_path_or_url must reflect that all of the target has been merged into it. Then this behaves like a merge with svn_client_merge5() from the target's URL to the source.

All other options are handled identically to svn_client_merge5(). The depth of the merge is always svn_depth_infinity.

Since
  New in 1.5.

Deprecated:
  Provided for backwards compatibility with the 1.7 API.

## svn_client_mergeinfo_get_merged()

svn_error_t * svn_client_mergeinfo_get_merged | ( | apr_hash_t ** | mergeinfo,
|  | const char * | path_or_url,
|  | const svn_opt_revision_t * | peg_revision,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Get the mergeinfo for a single target node (ignoring any subtrees).

Set *mergeinfo to a hash mapping `const char *` merge source URLs to `svn_rangelist_t *` rangelists describing the ranges which have been merged into path_or_url as of peg_revision, per path_or_url's explicit mergeinfo or inherited mergeinfo if no explicit mergeinfo if found. If no explicit or inherited mergeinfo is found, then set *mergeinfo to NULL.

Use pool for all necessary allocations.

If the server doesn't support retrieval of mergeinfo (which will never happen for file:// URLs), return an SVN_ERR_UNSUPPORTED_FEATURE error.

Note
  Unlike most APIs which deal with mergeinfo, this one returns data where the keys of the hash are absolute repository URLs rather than repository filesystem paths.

Since
  New in 1.5.

## svn_client_mergeinfo_log()

svn_error_t * svn_client_mergeinfo_log | ( | svn_boolean_t | finding_merged,
|  | const char * | target_path_or_url,
|  | const svn_opt_revision_t * | target_peg_revision,
|  | const char * | source_path_or_url,
|  | const svn_opt_revision_t * | source_peg_revision,
|  | svn_log_entry_receiver_t | receiver,
|  | void * | receiver_baton,
|  | svn_boolean_t | discover_changed_paths,
|  | svn_depth_t | depth,
|  | const apr_array_header_t * | revprops,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Similar to svn_client_mergeinfo_log2(), but with source_start_revision and source_end_revision always of kind `svn_opt_revision_unspecified`;.

Deprecated:
  Provided for backwards compatibility with the 1.7 API.

Since
  New in 1.7.

## svn_client_mergeinfo_log2()

svn_error_t * svn_client_mergeinfo_log2 | ( | svn_boolean_t | finding_merged,
|  | const char * | target_path_or_url,
|  | const svn_opt_revision_t * | target_peg_revision,
|  | const char * | source_path_or_url,
|  | const svn_opt_revision_t * | source_peg_revision,
|  | const svn_opt_revision_t * | source_start_revision,
|  | const svn_opt_revision_t * | source_end_revision,
|  | svn_log_entry_receiver_t | receiver,
|  | void * | receiver_baton,
|  | svn_boolean_t | discover_changed_paths,
|  | svn_depth_t | depth,
|  | const apr_array_header_t * | revprops,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | scratch_pool
| ) |  |

Describe the revisions that either have or have not been merged from one source branch (or subtree) into another.

If finding_merged is TRUE, then drive log entry callbacks receiver / receiver_baton with the revisions merged from source_path_or_url (as of source_peg_revision) into target_path_or_url (as of target_peg_revision). If finding_merged is FALSE then find the revisions eligible for merging.

If both source_start_revision and source_end_revision are unspecified (that is, of kind `svn_opt_revision_unspecified`), receiver will be called the requested revisions from 0 to source_peg_revision and in that order (that is, oldest to youngest). Otherwise, both source_start_revision and source_end_revision must be specified, which has two effects:

- receiver will be called only with revisions which fall within range of source_start_revision to source_end_revision, inclusive, and
- those revisions will be ordered in the same "direction" as the walk from source_start_revision to source_end_revision. (If source_start_revision is the younger of the two, receiver will be called with revisions in youngest-to-oldest order; otherwise, the reverse occurs.)

If depth is svn_depth_empty consider only the explicit or inherited mergeinfo on target_path_or_url when calculating merged revisions from source_path_or_url. If depth is svn_depth_infinity then also consider the explicit subtree mergeinfo under target_path_or_url. If a depth other than svn_depth_empty or svn_depth_infinity is requested then return a SVN_ERR_UNSUPPORTED_FEATURE error.

In addition to the behavior of discover_changed_paths described in svn_client_log5(), if set to TRUE it enables detection of sub-tree merges that are complete but can't be detected as complete without access to the changed paths. Sub-tree merges detected as complete will be included if finding_merged is TRUE or filtered if finding_merged is FALSE.

revprops is the same as for svn_client_log5(). Use scratch_pool for all temporary allocations.

ctx is a context used for authentication.

If the server doesn't support retrieval of mergeinfo, return an SVN_ERR_UNSUPPORTED_FEATURE error.

Since
  New in 1.8.

## svn_client_mergeinfo_log_eligible()

svn_error_t * svn_client_mergeinfo_log_eligible | ( | const char * | path_or_url,
|  | const svn_opt_revision_t * | peg_revision,
|  | const char * | merge_source_path_or_url,
|  | const svn_opt_revision_t * | src_peg_revision,
|  | svn_log_entry_receiver_t | receiver,
|  | void * | receiver_baton,
|  | svn_boolean_t | discover_changed_paths,
|  | const apr_array_header_t * | revprops,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_mergeinfo_log(), but finds only eligible revisions and always operates at depth svn_depth_empty.

Deprecated:
  Provided for backwards compatibility with the 1.6 API. Use svn_client_mergeinfo_log() instead.

Since
  New in 1.5.

## svn_client_mergeinfo_log_merged()

svn_error_t * svn_client_mergeinfo_log_merged | ( | const char * | path_or_url,
|  | const svn_opt_revision_t * | peg_revision,
|  | const char * | merge_source_path_or_url,
|  | const svn_opt_revision_t * | src_peg_revision,
|  | svn_log_entry_receiver_t | receiver,
|  | void * | receiver_baton,
|  | svn_boolean_t | discover_changed_paths,
|  | const apr_array_header_t * | revprops,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Similar to svn_client_mergeinfo_log(), but finds only merged revisions and always operates at depth svn_depth_empty.

Deprecated:
  Provided for backwards compatibility with the 1.6 API. Use svn_client_mergeinfo_log() instead.

Since
  New in 1.5.

## svn_client_suggest_merge_sources()

svn_error_t * svn_client_suggest_merge_sources | ( | apr_array_header_t ** | suggestions,
|  | const char * | path_or_url,
|  | const svn_opt_revision_t * | peg_revision,
|  | svn_client_ctx_t * | ctx,
|  | apr_pool_t * | pool
| ) |  |

Set suggestions to an ordered array of `const` char * potential merge sources (expressed as full repository URLs) for path_or_url at peg_revision.

path_or_url is a working copy path or repository URL. ctx is a context used for authentication in the repository case. Use pool for all allocations.

Since
  New in 1.5.