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 2011/10/24 16:48:30 UTC

svn commit: r1188161 - in /subversion/trunk/subversion/libsvn_client: merge.c mergeinfo.c mergeinfo.h

Author: julianfoad
Date: Mon Oct 24 14:48:29 2011
New Revision: 1188161

URL: http://svn.apache.org/viewvc?rev=1188161&view=rev
Log:
Combine two similar mergeinfo functions.

* subversion/libsvn_client/mergeinfo.h
  (svn_client__adjust_mergeinfo_source_paths): Delete.

* subversion/libsvn_client/mergeinfo.c
  (svn_client__adjust_mergeinfo_source_paths): Delete.
  (svn_client__get_wc_mergeinfo, should_elide_mergeinfo): Use
    svn_mergeinfo__add_suffix_to_mergeinfo() instead of
    svn_client__adjust_mergeinfo_source_paths().

* subversion/libsvn_client/merge.c
  (inherit_implicit_mergeinfo_from_parent): Same.

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=1188161&r1=1188160&r2=1188161&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/merge.c (original)
+++ subversion/trunk/subversion/libsvn_client/merge.c Mon Oct 24 14:48:29 2011
@@ -3549,17 +3549,15 @@ inherit_implicit_mergeinfo_from_parent(s
                                ctx, result_pool, scratch_pool));
 
   /* Let CHILD inherit PARENT's implicit mergeinfo. */
-  child->implicit_mergeinfo = apr_hash_make(result_pool);
 
   path_diff = svn_dirent_is_child(parent->abspath, child->abspath,
                                   scratch_pool);
-
   /* PARENT->PATH better be an ancestor of CHILD->ABSPATH! */
   SVN_ERR_ASSERT(path_diff);
 
-  SVN_ERR(svn_client__adjust_mergeinfo_source_paths(
-    child->implicit_mergeinfo, path_diff,
-    parent->implicit_mergeinfo, result_pool));
+  SVN_ERR(svn_mergeinfo__add_suffix_to_mergeinfo(
+            &child->implicit_mergeinfo, parent->implicit_mergeinfo,
+            path_diff, result_pool, scratch_pool));
   child->implicit_mergeinfo = svn_mergeinfo_dup(child->implicit_mergeinfo,
                                                 result_pool);
   return SVN_NO_ERROR;

Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.c?rev=1188161&r1=1188160&r2=1188161&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/mergeinfo.c (original)
+++ subversion/trunk/subversion/libsvn_client/mergeinfo.c Mon Oct 24 14:48:29 2011
@@ -141,33 +141,6 @@ svn_client__record_wc_mergeinfo(const ch
 /*** Retrieving mergeinfo. ***/
 
 svn_error_t *
-svn_client__adjust_mergeinfo_source_paths(svn_mergeinfo_t adjusted_mergeinfo,
-                                          const char *rel_path,
-                                          svn_mergeinfo_t mergeinfo,
-                                          apr_pool_t *pool)
-{
-  apr_hash_index_t *hi;
-  const char *path;
-
-  SVN_ERR_ASSERT(adjusted_mergeinfo);
-  SVN_ERR_ASSERT(mergeinfo);
-
-  for (hi = apr_hash_first(pool, mergeinfo); hi; hi = apr_hash_next(hi))
-    {
-      const char *merge_source = svn__apr_hash_index_key(hi);
-      apr_array_header_t *rangelist = svn__apr_hash_index_val(hi);
-
-      /* Copy inherited mergeinfo into our output hash, adjusting the
-         merge source as appropriate. */
-      path = svn_fspath__join(merge_source, rel_path, pool);
-      apr_hash_set(adjusted_mergeinfo, path, APR_HASH_KEY_STRING,
-                   rangelist);
-    }
-  return SVN_NO_ERROR;
-}
-
-
-svn_error_t *
 svn_client__get_wc_mergeinfo(svn_mergeinfo_t *mergeinfo,
                              svn_boolean_t *inherited,
                              svn_mergeinfo_inheritance_t inherit,
@@ -294,11 +267,11 @@ svn_client__get_wc_mergeinfo(svn_mergein
       if (wc_mergeinfo)
         {
           *inherited = TRUE;
-          *mergeinfo = apr_hash_make(result_pool);
-          SVN_ERR(svn_client__adjust_mergeinfo_source_paths(*mergeinfo,
-                                                            walk_relpath,
-                                                            wc_mergeinfo,
-                                                            result_pool));
+          SVN_ERR(svn_mergeinfo__add_suffix_to_mergeinfo(mergeinfo,
+                                                         wc_mergeinfo,
+                                                         walk_relpath,
+                                                         result_pool,
+                                                         scratch_pool));
         }
       else
         {
@@ -810,13 +783,11 @@ should_elide_mergeinfo(svn_boolean_t *el
       svn_mergeinfo_t path_tweaked_parent_mergeinfo;
       apr_pool_t *subpool = svn_pool_create(pool);
 
-      path_tweaked_parent_mergeinfo = apr_hash_make(subpool);
-
       /* If we need to adjust the paths in PARENT_MERGEINFO do it now. */
       if (path_suffix)
-        SVN_ERR(svn_client__adjust_mergeinfo_source_paths(
-          path_tweaked_parent_mergeinfo,
-          path_suffix, parent_mergeinfo, subpool));
+        SVN_ERR(svn_mergeinfo__add_suffix_to_mergeinfo(
+                  &path_tweaked_parent_mergeinfo, parent_mergeinfo,
+                  path_suffix, subpool, subpool));
       else
         path_tweaked_parent_mergeinfo = parent_mergeinfo;
 

Modified: subversion/trunk/subversion/libsvn_client/mergeinfo.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_client/mergeinfo.h?rev=1188161&r1=1188160&r2=1188161&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_client/mergeinfo.h (original)
+++ subversion/trunk/subversion/libsvn_client/mergeinfo.h Mon Oct 24 14:48:29 2011
@@ -357,17 +357,6 @@ svn_error_t *
 svn_client__elide_mergeinfo_catalog(svn_mergeinfo_t mergeinfo_catalog,
                                     apr_pool_t *pool);
 
-/* For each source path : rangelist pair in MERGEINFO, append REL_PATH to
-   the source path and add the new source path : rangelist pair to
-   ADJUSTED_MERGEINFO.  The new source path and rangelist are both deep
-   copies allocated in POOL.  Neither ADJUSTED_MERGEINFO
-   nor MERGEINFO should be NULL. */
-svn_error_t *
-svn_client__adjust_mergeinfo_source_paths(svn_mergeinfo_t adjusted_mergeinfo,
-                                          const char *rel_path,
-                                          svn_mergeinfo_t mergeinfo,
-                                          apr_pool_t *pool);
-
 /* Set *MERGEINFO_CHANGES to TRUE if LOCAL_ABSPATH has locally modified
    mergeinfo, set *MERGEINFO_CHANGES to FALSE otherwise. */
 svn_error_t *