Author: julianfoad
Date: Mon Nov 21 14:07:15 2011
New Revision: 1204505
URL: http://svn.apache.org/viewvc?rev=1204505&view=rev
Log:
Factor out another mergeinfo function.
* subversion/libsvn_client/mergeinfo.h,
subversion/libsvn_client/mergeinfo.c
(svn_client__record_wc_mergeinfo_catalog): New function, extracted ...
* subversion/libsvn_client/merge.c:
(merge_cousins_and_supplement_mergeinfo): ... from here.
Modified:
subversion/trunk/subversion/libsvn_client/merge.c
subversion/trunk/subversion/libsvn_client/mergeinfo.c
subversion/trunk/subversion/libsvn_client/mergeinfo.h
Modified: subversion/trunk/subversion/libsvn_client/merge.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/merge.c?rev=1204505&r1=1204504&r2=1204505&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Mon Nov 21 14:07:15 2011
@@ -9129,42 +9129,8 @@ merge_cousins_and_supplement_mergeinfo(c
SVN_ERR(svn_mergeinfo_catalog_merge(add_result_catalog,
remove_result_catalog,
scratch_pool, scratch_pool));
-
- if (apr_hash_count(add_result_catalog))
- {
- int i;
- apr_array_header_t *sorted_cat =
- svn_sort__hash(add_result_catalog,
- svn_sort_compare_items_as_paths,
- scratch_pool);
- for (i = 0; i < sorted_cat->nelts; i++)
- {
- svn_sort__item_t elt = APR_ARRAY_IDX(sorted_cat, i,
- svn_sort__item_t);
- svn_error_t *err;
-
- svn_pool_clear(subpool);
- err = svn_client__record_wc_mergeinfo(elt.key,
- elt.value,
- TRUE, ctx,
- subpool);
-
- if (err && err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
- {
- /* PATH isn't just missing, it's not even versioned as far
- as this working copy knows. But it was included in
- MERGES, which means that the server knows about it.
- Likely we don't have access to the source due to authz
- restrictions. For now just clear the error and
- continue... */
- svn_error_clear(err);
- }
- else
- {
- SVN_ERR(err);
- }
- }
- }
+ SVN_ERR(svn_client__record_wc_mergeinfo_catalog(add_result_catalog,
+ ctx, scratch_pool));
}
svn_pool_destroy(subpool);
Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.c?rev=1204505&r1=1204504&r2=1204505&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/trunk/subversion/libsvn_client/mergeinfo.c Mon Nov 21 14:07:15
2011
@@ -147,6 +147,49 @@ svn_client__record_wc_mergeinfo(const ch
return SVN_NO_ERROR;
}
+svn_error_t *
+svn_client__record_wc_mergeinfo_catalog(apr_hash_t *result_catalog,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool)
+{
+ apr_pool_t *iterpool = svn_pool_create(scratch_pool);
+
+ if (apr_hash_count(result_catalog))
+ {
+ int i;
+ apr_array_header_t *sorted_cat =
+ svn_sort__hash(result_catalog, svn_sort_compare_items_as_paths,
+ scratch_pool);
+ for (i = 0; i < sorted_cat->nelts; i++)
+ {
+ svn_sort__item_t elt = APR_ARRAY_IDX(sorted_cat, i,
+ svn_sort__item_t);
+ svn_error_t *err;
+
+ svn_pool_clear(iterpool);
+ err = svn_client__record_wc_mergeinfo(elt.key, elt.value, TRUE,
+ ctx, iterpool);
+
+ if (err && err->apr_err == SVN_ERR_ENTRY_NOT_FOUND)
+ {
+ /* PATH isn't just missing, it's not even versioned as far
+ as this working copy knows. But it was included in
+ MERGES, which means that the server knows about it.
+ Likely we don't have access to the source due to authz
+ restrictions. For now just clear the error and
+ continue... */
+ svn_error_clear(err);
+ }
+ else
+ {
+ SVN_ERR(err);
+ }
+ }
+ }
+ svn_pool_destroy(iterpool);
+ return SVN_NO_ERROR;
+}
+
/*-----------------------------------------------------------------------*/
/*** Retrieving mergeinfo. ***/
Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.h
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.h?rev=1204505&r1=1204504&r2=1204505&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/mergeinfo.h (original)
+++ subversion/trunk/subversion/libsvn_client/mergeinfo.h Mon Nov 21 14:07:15
2011
@@ -321,6 +321,13 @@ svn_client__record_wc_mergeinfo(const ch
svn_client_ctx_t *ctx,
apr_pool_t *scratch_pool);
+/* Write mergeinfo into the WC. RESULT_CATALOG maps (const char *) WC paths
+ * to (svn_mergeinfo_t) mergeinfo. */
+svn_error_t *
+svn_client__record_wc_mergeinfo_catalog(apr_hash_t *result_catalog,
+ svn_client_ctx_t *ctx,
+ apr_pool_t *scratch_pool);
+
/* Elide any svn:mergeinfo set on TARGET_WCPATH to its nearest working
copy (or possibly repository) ancestor with equivalent mergeinfo.