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.
 


Reply via email to