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;