Author: stsp
Date: Thu Apr 21 13:03:46 2016
New Revision: 1740298
URL: http://svn.apache.org/viewvc?rev=1740298&view=rev
Log:
Expose merge_locked() from libsvn_client/merge.c the rest of libsvn_client.
* subversion/libsvn_client/client.h
(svn_client__conflict_report_t): Moved here from merge.c.
(svn_client__make_merge_conflict_error,
svn_client__merge_locked): Declare.
* subversion/libsvn_client/merge.c
(conflict_report_t): Moved to client.h as svn_client__conflict_report_t.
(make_merge_conflict_error, merge_locked): Rename to
svn_client__make_merge_conflict_error and svn_client__merge_locked.
(conflict_report_create, conflict_report_dup, do_merge,
merge_cousins_and_supplement_mergeinfo,
svn_client_merge5, merge_reintegrate_locked,
merge_peg_locked, do_automatic_merge_locked,
svn_client_merge_peg5): Track renames.
Modified:
subversion/trunk/subversion/libsvn_client/client.h
subversion/trunk/subversion/libsvn_client/merge.c
Modified: subversion/trunk/subversion/libsvn_client/client.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/client.h?rev=1740298&r1=1740297&r2=1740298&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/client.h (original)
+++ subversion/trunk/subversion/libsvn_client/client.h Thu Apr 21 13:03:46 2016
@@ -1227,6 +1227,46 @@ svn_client__merge_elements(svn_boolean_t
apr_pool_t *result_pool,
apr_pool_t *scratch_pool);
+/* Data for reporting when a merge aborted because of raising conflicts.
+ *
+ * ### TODO: More info, including the ranges (or other parameters) the user
+ * needs to complete the merge.
+ */
+typedef struct svn_client__conflict_report_t
+{
+ const char *target_abspath;
+ /* The revision range during which conflicts were raised */
+ const merge_source_t *conflicted_range;
+ /* Was the conflicted range the last range in the whole requested merge? */
+ svn_boolean_t was_last_range;
+} svn_client__conflict_report_t;
+
+/* Create and return an error structure appropriate for the unmerged
+ revisions range(s). */
+svn_error_t *
+svn_client__make_merge_conflict_error(svn_client__conflict_report_t *report,
+ apr_pool_t *scratch_pool);
+
+/* The body of svn_client_merge5(), which see for details. */
+svn_error_t *
+svn_client__merge_locked(svn_client__conflict_report_t **conflict_report,
+ const char *source1,
+ const svn_opt_revision_t *revision1,
+ const char *source2,
+ const svn_opt_revision_t *revision2,
+ const char *target_abspath,
+ 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 *result_pool,
+ apr_pool_t *scratch_pool);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1740298&r1=1740297&r2=1740298&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Thu Apr 21 13:03:46 2016
@@ -5498,29 +5498,16 @@ single_range_conflict_report_create(cons
return report;
}
-/* Data for reporting when a merge aborted because of raising conflicts.
- *
- * ### TODO: More info, including the ranges (or other parameters) the user
- * needs to complete the merge.
- */
-typedef struct conflict_report_t
-{
- const char *target_abspath;
- /* The revision range during which conflicts were raised */
- const merge_source_t *conflicted_range;
- /* Was the conflicted range the last range in the whole requested merge? */
- svn_boolean_t was_last_range;
-} conflict_report_t;
-
-/* Return a new conflict_report_t containing deep copies of the parameters,
- * allocated in RESULT_POOL. */
-static conflict_report_t *
+/* Return a new svn_client__conflict_report_t containing deep copies of the
+ * parameters, allocated in RESULT_POOL. */
+static svn_client__conflict_report_t *
conflict_report_create(const char *target_abspath,
const merge_source_t *conflicted_range,
svn_boolean_t was_last_range,
apr_pool_t *result_pool)
{
- conflict_report_t *report = apr_palloc(result_pool, sizeof(*report));
+ svn_client__conflict_report_t *report = apr_palloc(result_pool,
+ sizeof(*report));
report->target_abspath = apr_pstrdup(result_pool, target_abspath);
report->conflicted_range = merge_source_dup(conflicted_range, result_pool);
@@ -5529,11 +5516,12 @@ conflict_report_create(const char *targe
}
/* Return a deep copy of REPORT, allocated in RESULT_POOL. */
-static conflict_report_t *
-conflict_report_dup(const conflict_report_t *report,
+static svn_client__conflict_report_t *
+conflict_report_dup(const svn_client__conflict_report_t *report,
apr_pool_t *result_pool)
{
- conflict_report_t *new = apr_pmemdup(result_pool, report, sizeof(*new));
+ svn_client__conflict_report_t *new = apr_pmemdup(result_pool, report,
+ sizeof(*new));
new->target_abspath = apr_pstrdup(result_pool, report->target_abspath);
new->conflicted_range = merge_source_dup(report->conflicted_range,
@@ -5541,11 +5529,9 @@ conflict_report_dup(const conflict_repor
return new;
}
-/* Create and return an error structure appropriate for the unmerged
- revisions range(s). */
-static APR_INLINE svn_error_t *
-make_merge_conflict_error(conflict_report_t *report,
- apr_pool_t *scratch_pool)
+svn_error_t *
+svn_client__make_merge_conflict_error(svn_client__conflict_report_t *report,
+ apr_pool_t *scratch_pool)
{
assert(!report || svn_dirent_is_absolute(report->target_abspath));
@@ -9779,7 +9765,7 @@ ensure_ra_session_url(svn_ra_session_t *
static svn_error_t *
do_merge(apr_hash_t **modified_subtrees,
svn_mergeinfo_catalog_t result_catalog,
- conflict_report_t **conflict_report,
+ svn_client__conflict_report_t **conflict_report,
svn_boolean_t *use_sleep,
const apr_array_header_t *merge_sources,
const merge_target_t *target,
@@ -10102,23 +10088,24 @@ do_merge(apr_hash_t **modified_subtrees,
SCRATCH_POOL is used for all temporary allocations.
*/
static svn_error_t *
-merge_cousins_and_supplement_mergeinfo(conflict_report_t **conflict_report,
- svn_boolean_t *use_sleep,
- const merge_target_t *target,
- svn_ra_session_t *URL1_ra_session,
- svn_ra_session_t *URL2_ra_session,
- const merge_source_t *source,
- const svn_client__pathrev_t *yca,
- svn_boolean_t same_repos,
- svn_depth_t depth,
- svn_boolean_t diff_ignore_ancestry,
- svn_boolean_t force_delete,
- 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 *result_pool,
- apr_pool_t *scratch_pool)
+merge_cousins_and_supplement_mergeinfo(
+ svn_client__conflict_report_t **conflict_report,
+ svn_boolean_t *use_sleep,
+ const merge_target_t *target,
+ svn_ra_session_t *URL1_ra_session,
+ svn_ra_session_t *URL2_ra_session,
+ const merge_source_t *source,
+ const svn_client__pathrev_t *yca,
+ svn_boolean_t same_repos,
+ svn_depth_t depth,
+ svn_boolean_t diff_ignore_ancestry,
+ svn_boolean_t force_delete,
+ 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 *result_pool,
+ apr_pool_t *scratch_pool)
{
apr_array_header_t *remove_sources, *add_sources;
apr_hash_t *modified_subtrees = NULL;
@@ -10442,24 +10429,24 @@ open_target_wc(merge_target_t **target_p
*
* IGNORE_MERGEINFO and DIFF_IGNORE_ANCESTRY are as in do_merge().
*/
-static svn_error_t *
-merge_locked(conflict_report_t **conflict_report,
- const char *source1,
- const svn_opt_revision_t *revision1,
- const char *source2,
- const svn_opt_revision_t *revision2,
- const char *target_abspath,
- 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 *result_pool,
- apr_pool_t *scratch_pool)
+svn_error_t *
+svn_client__merge_locked(svn_client__conflict_report_t **conflict_report,
+ const char *source1,
+ const svn_opt_revision_t *revision1,
+ const char *source2,
+ const svn_opt_revision_t *revision2,
+ const char *target_abspath,
+ 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 *result_pool,
+ apr_pool_t *scratch_pool)
{
merge_target_t *target;
svn_client__pathrev_t *source1_loc, *source2_loc;
@@ -10656,7 +10643,7 @@ svn_client_merge5(const char *source1,
apr_pool_t *pool)
{
const char *target_abspath, *lock_abspath;
- conflict_report_t *conflict_report;
+ svn_client__conflict_report_t *conflict_report;
/* Sanity check our input -- we require specified revisions,
* and either 2 paths or 2 URLs. */
@@ -10679,22 +10666,23 @@ svn_client_merge5(const char *source1,
if (!dry_run)
SVN_WC__CALL_WITH_WRITE_LOCK(
- merge_locked(&conflict_report,
- source1, revision1, source2, revision2,
- target_abspath, depth, ignore_mergeinfo,
- diff_ignore_ancestry,
- force_delete, record_only, dry_run,
- allow_mixed_rev, merge_options, ctx, pool, pool),
+ svn_client__merge_locked(&conflict_report,
+ source1, revision1, source2, revision2,
+ target_abspath, depth, ignore_mergeinfo,
+ diff_ignore_ancestry,
+ force_delete, record_only, dry_run,
+ allow_mixed_rev, merge_options, ctx, pool,
pool),
ctx->wc_ctx, lock_abspath, FALSE /* lock_anchor */, pool);
else
- SVN_ERR(merge_locked(&conflict_report,
- source1, revision1, source2, revision2,
- target_abspath, depth, ignore_mergeinfo,
- diff_ignore_ancestry,
- force_delete, record_only, dry_run,
- allow_mixed_rev, merge_options, ctx, pool, pool));
+ SVN_ERR(svn_client__merge_locked(&conflict_report,
+ source1, revision1, source2, revision2,
+ target_abspath, depth, ignore_mergeinfo,
+ diff_ignore_ancestry,
+ force_delete, record_only, dry_run,
+ allow_mixed_rev, merge_options, ctx, pool,
+ pool));
- SVN_ERR(make_merge_conflict_error(conflict_report, pool));
+ SVN_ERR(svn_client__make_merge_conflict_error(conflict_report, pool));
return SVN_NO_ERROR;
}
@@ -11713,7 +11701,7 @@ open_reintegrate_source_and_target(svn_r
/* The body of svn_client_merge_reintegrate(), which see for details. */
static svn_error_t *
-merge_reintegrate_locked(conflict_report_t **conflict_report,
+merge_reintegrate_locked(svn_client__conflict_report_t **conflict_report,
const char *source_path_or_url,
const svn_opt_revision_t *source_peg_revision,
const char *target_abspath,
@@ -11788,7 +11776,7 @@ svn_client_merge_reintegrate(const char
apr_pool_t *pool)
{
const char *target_abspath, *lock_abspath;
- conflict_report_t *conflict_report;
+ svn_client__conflict_report_t *conflict_report;
SVN_ERR(get_target_and_lock_abspath(&target_abspath, &lock_abspath,
target_wcpath, ctx, pool));
@@ -11808,7 +11796,7 @@ svn_client_merge_reintegrate(const char
FALSE /*diff_ignore_ancestry*/,
dry_run, merge_options, ctx, pool, pool));
- SVN_ERR(make_merge_conflict_error(conflict_report, pool));
+ SVN_ERR(svn_client__make_merge_conflict_error(conflict_report, pool));
return SVN_NO_ERROR;
}
@@ -11818,7 +11806,7 @@ svn_client_merge_reintegrate(const char
* IGNORE_MERGEINFO and DIFF_IGNORE_ANCESTRY are as in do_merge().
*/
static svn_error_t *
-merge_peg_locked(conflict_report_t **conflict_report,
+merge_peg_locked(svn_client__conflict_report_t **conflict_report,
const char *source_path_or_url,
const svn_opt_revision_t *source_peg_revision,
const svn_rangelist_t *ranges_to_merge,
@@ -11923,7 +11911,7 @@ client_find_automatic_merge(automatic_me
apr_pool_t *scratch_pool);
static svn_error_t *
-do_automatic_merge_locked(conflict_report_t **conflict_report,
+do_automatic_merge_locked(svn_client__conflict_report_t **conflict_report,
const automatic_merge_t *merge,
const char *target_abspath,
svn_depth_t depth,
@@ -11953,7 +11941,7 @@ svn_client_merge_peg5(const char *source
apr_pool_t *pool)
{
const char *target_abspath, *lock_abspath;
- conflict_report_t *conflict_report;
+ svn_client__conflict_report_t *conflict_report;
/* No ranges to merge? No problem. */
if (ranges_to_merge != NULL && ranges_to_merge->nelts == 0)
@@ -12018,7 +12006,7 @@ svn_client_merge_peg5(const char *source
force_delete, record_only, dry_run,
allow_mixed_rev, merge_options, ctx, pool, pool));
- SVN_ERR(make_merge_conflict_error(conflict_report, pool));
+ SVN_ERR(svn_client__make_merge_conflict_error(conflict_report, pool));
return SVN_NO_ERROR;
}
@@ -12698,7 +12686,7 @@ client_find_automatic_merge(automatic_me
* eliminate already-cherry-picked revisions from the source.
*/
static svn_error_t *
-do_automatic_merge_locked(conflict_report_t **conflict_report,
+do_automatic_merge_locked(svn_client__conflict_report_t **conflict_report,
const automatic_merge_t *merge,
const char *target_abspath,
svn_depth_t depth,