You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/11/12 10:12:41 UTC

svn commit: r1713983 - in /subversion/branches/move-tracking-2/subversion/svnmover: merge3.c svnmover.c svnmover.h

Author: julianfoad
Date: Thu Nov 12 09:12:41 2015
New Revision: 1713983

URL: http://svn.apache.org/viewvc?rev=1713983&view=rev
Log:
On the 'move-tracking-2' branch: Factor out a duplicated function.

* subversion/svnmover/svnmover.h
  (svnmover_element_differences): Move and rename to here...

* subversion/svnmover/merge3.c
  (element_differences): ... from here (updating callers as well)...

* subversion/svnmover/svnmover.c
  (element_differences): ... and from here (updating callers as well).

Modified:
    subversion/branches/move-tracking-2/subversion/svnmover/merge3.c
    subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c
    subversion/branches/move-tracking-2/subversion/svnmover/svnmover.h

Modified: subversion/branches/move-tracking-2/subversion/svnmover/merge3.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnmover/merge3.c?rev=1713983&r1=1713982&r2=1713983&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/merge3.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/merge3.c Thu Nov 12 09:12:41 2015
@@ -49,52 +49,6 @@
 
 /* ====================================================================== */
 
-/* Return (left, right) pairs of element content that differ between
- * subtrees LEFT and RIGHT.
- *
- * Set *DIFF_P to a hash of (eid -> (svn_element__content_t *)[2]).
- */
-static svn_error_t *
-element_differences(apr_hash_t **diff_p,
-                    const svn_element__tree_t *left,
-                    const svn_element__tree_t *right,
-                    apr_pool_t *result_pool,
-                    apr_pool_t *scratch_pool)
-{
-  apr_hash_t *diff = apr_hash_make(result_pool);
-  apr_hash_index_t *hi;
-
-  /*SVN_DBG(("element_differences(b%s r%ld, b%s r%ld, e%d)",
-           svn_branch__get_id(left->branch, scratch_pool), left->rev,
-           svn_branch__get_id(right->branch, scratch_pool), right->rev,
-           right->eid));*/
-
-  for (hi = apr_hash_first(scratch_pool,
-                           hash_overlay(left->e_map, right->e_map));
-       hi; hi = apr_hash_next(hi))
-    {
-      int e = svn_eid__hash_this_key(hi);
-      svn_element__content_t *element_left
-        = svn_element__tree_get(left, e);
-      svn_element__content_t *element_right
-        = svn_element__tree_get(right, e);
-
-      if (! svn_element__content_equal(element_left, element_right,
-                                       scratch_pool))
-        {
-          svn_element__content_t **contents
-            = apr_palloc(result_pool, 2 * sizeof(void *));
-
-          contents[0] = element_left;
-          contents[1] = element_right;
-          svn_eid__hash_set(diff, e, contents);
-        }
-    }
-
-  *diff_p = diff;
-  return SVN_NO_ERROR;
-}
-
 /* Return a string suitable for appending to a displayed element name or
  * element id to indicate that it is a subbranch root element for SUBBRANCH.
  * Return "" if SUBBRANCH is null.
@@ -989,14 +943,14 @@ branch_merge_subtree_r(svn_branch__txn_t
   SVN_ERR(svn_branch__get_subtree(src->branch, &s_src, src->eid, scratch_pool));
   SVN_ERR(svn_branch__get_subtree(tgt->branch, &s_tgt, tgt->eid, scratch_pool));
   SVN_ERR(svn_branch__get_subtree(yca->branch, &s_yca, yca->eid, scratch_pool));
-  SVN_ERR(element_differences(&diff_yca_src,
-                              s_yca->tree, s_src->tree,
-                              scratch_pool, scratch_pool));
+  SVN_ERR(svnmover_element_differences(&diff_yca_src,
+                                       s_yca->tree, s_src->tree,
+                                       scratch_pool, scratch_pool));
   /* ### We only need to query for YCA:TO differences in elements that are
          different in YCA:FROM, but right now we ask for all differences. */
-  SVN_ERR(element_differences(&diff_yca_tgt,
-                              s_yca->tree, s_tgt->tree,
-                              scratch_pool, scratch_pool));
+  SVN_ERR(svnmover_element_differences(&diff_yca_tgt,
+                                       s_yca->tree, s_tgt->tree,
+                                       scratch_pool, scratch_pool));
 
   SVN_ERR(svn_branch__state_get_elements(src->branch, &src_elements,
                                          scratch_pool));

Modified: subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c?rev=1713983&r1=1713982&r2=1713983&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c (original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.c Thu Nov 12 09:12:41 2015
@@ -310,17 +310,12 @@ wc_create(svnmover_wc_t **wc_p,
   return SVN_NO_ERROR;
 }
 
-/* Return (left, right) pairs of element content that differ between
- * subtrees LEFT and RIGHT.
- *
- * Set *DIFF_P to a hash of (eid -> (svn_element__content_t *)[2]).
- */
-static svn_error_t *
-element_differences(apr_hash_t **diff_p,
-                    const svn_element__tree_t *left,
-                    const svn_element__tree_t *right,
-                    apr_pool_t *result_pool,
-                    apr_pool_t *scratch_pool)
+svn_error_t *
+svnmover_element_differences(apr_hash_t **diff_p,
+                             const svn_element__tree_t *left,
+                             const svn_element__tree_t *right,
+                             apr_pool_t *result_pool,
+                             apr_pool_t *scratch_pool)
 {
   apr_hash_t *diff = apr_hash_make(result_pool);
   apr_hash_index_t *hi;
@@ -409,9 +404,10 @@ txn_is_changed(svn_branch__txn_t *edit_t
                                              scratch_pool));
       SVN_ERR(svn_branch__state_get_elements(base_branch, &base_branch_elements,
                                              scratch_pool));
-      SVN_ERR(element_differences(&diff,
-                                  edit_branch_elements, base_branch_elements,
-                                  scratch_pool, scratch_pool));
+      SVN_ERR(svnmover_element_differences(&diff,
+                                           edit_branch_elements,
+                                           base_branch_elements,
+                                           scratch_pool, scratch_pool));
       if (apr_hash_count(diff))
         {
           *is_changed = TRUE;
@@ -442,9 +438,9 @@ subtree_replay(svn_branch__state_t *edit
   if (! s_right)
     s_right = svn_element__tree_create(NULL, 0 /*root_eid*/, scratch_pool);
 
-  SVN_ERR(element_differences(&diff_left_right,
-                              s_left, s_right,
-                              scratch_pool, scratch_pool));
+  SVN_ERR(svnmover_element_differences(&diff_left_right,
+                                       s_left, s_right,
+                                       scratch_pool, scratch_pool));
 
   /* Go through the per-element differences. */
   for (hi = apr_hash_first(scratch_pool, diff_left_right);
@@ -1405,9 +1401,9 @@ subtree_diff(apr_hash_t **diff_changes,
 
   *diff_changes = apr_hash_make(result_pool);
 
-  SVN_ERR(element_differences(&diff_left_right,
-                              s_left->tree, s_right->tree,
-                              result_pool, scratch_pool));
+  SVN_ERR(svnmover_element_differences(&diff_left_right,
+                                       s_left->tree, s_right->tree,
+                                       result_pool, scratch_pool));
 
   for (hi = apr_hash_first(scratch_pool, diff_left_right);
        hi; hi = apr_hash_next(hi))

Modified: subversion/branches/move-tracking-2/subversion/svnmover/svnmover.h
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/svnmover/svnmover.h?rev=1713983&r1=1713982&r2=1713983&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/svnmover/svnmover.h (original)
+++ subversion/branches/move-tracking-2/subversion/svnmover/svnmover.h Thu Nov 12 09:12:41 2015
@@ -71,6 +71,18 @@ typedef struct svnmover_wc_version_t
   svn_branch__state_t *branch;
 } svnmover_wc_version_t;
 
+/* Return (left, right) pairs of element content that differ between
+ * subtrees LEFT and RIGHT.
+ *
+ * Set *DIFF_P to a hash of (eid -> (svn_element__content_t *)[2]).
+ */
+svn_error_t *
+svnmover_element_differences(apr_hash_t **diff_p,
+                             const svn_element__tree_t *left,
+                             const svn_element__tree_t *right,
+                             apr_pool_t *result_pool,
+                             apr_pool_t *scratch_pool);
+
 /*  */
 typedef struct conflict_storage_t conflict_storage_t;