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/12/04 13:28:08 UTC

svn commit: r1717951 - /subversion/trunk/subversion/libsvn_delta/branch_compat.c

Author: julianfoad
Date: Fri Dec  4 12:28:07 2015
New Revision: 1717951

URL: http://svn.apache.org/viewvc?rev=1717951&view=rev
Log:
* subversion/libsvn_delta/branch_compat.c
  (convert_branch_to_paths): To ease debugging and understanding, don't
    insert entries for subbranch-root elements and then hope they get
    overwritten by the corresponding inner branch root element.

Modified:
    subversion/trunk/subversion/libsvn_delta/branch_compat.c

Modified: subversion/trunk/subversion/libsvn_delta/branch_compat.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_delta/branch_compat.c?rev=1717951&r1=1717950&r2=1717951&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_delta/branch_compat.c (original)
+++ subversion/trunk/subversion/libsvn_delta/branch_compat.c Fri Dec  4 12:28:07 2015
@@ -1186,30 +1186,27 @@ convert_branch_to_paths(apr_hash_t *path
   for (hi = apr_hash_first(scratch_pool, elements->e_map);
        hi; hi = apr_hash_next(hi))
     {
-      int eid = *(const int *)apr_hash_this_key(hi);
+      int eid = svn_eid__hash_this_key(hi);
+      svn_element__content_t *element = apr_hash_this_val(hi);
       const char *rrpath
         = branch_get_storage_rrpath_by_eid(branch, eid, result_pool);
-      svn_branch__el_rev_id_t *ba = svn_hash_gets(paths, rrpath);
+      svn_branch__el_rev_id_t *ba;
 
-      /* Fill in the details. If it's already been filled in, then let a
-         branch-root element override a sub-branch element of an outer
-         branch, because the branch-root element is the one that should
-         be specifying the element's payload.
-       */
-      if (! ba
-          || eid == svn_branch__root_eid(branch))
-        {
-          ba = svn_branch__el_rev_id_create(branch, eid, branch->txn->rev,
-                                            result_pool);
-          svn_hash_sets(paths, rrpath, ba);
-          /*SVN_DBG(("branch-to-path[%d]: b%s e%d -> %s",
-                   i, svn_branch__get_id(branch, scratch_pool), eid, rrpath));*/
-        }
-      else
-        {
-          /*SVN_DBG(("branch-to-path: b%s e%d -> <already present; not overwriting> (%s)",
-                   svn_branch__get_id(branch, scratch_pool), eid, rrpath));*/
-        }
+      /* A subbranch-root element carries no payload; the corresponding
+         inner branch root element will provide the payload for this path. */
+      if (element->payload->is_subbranch_root)
+        continue;
+
+      /* No other element should exist at this path, given that we avoid
+         storing anything for a subbranch-root element. */
+      SVN_ERR_ASSERT(! svn_hash_gets(paths, rrpath));
+
+      /* Fill in the details. */
+      ba = svn_branch__el_rev_id_create(branch, eid, branch->txn->rev,
+                                        result_pool);
+      svn_hash_sets(paths, rrpath, ba);
+      /*SVN_DBG(("branch-to-path[%d]: b%s e%d -> %s",
+               i, svn_branch__get_id(branch, scratch_pool), eid, rrpath));*/
     }
   return SVN_NO_ERROR;
 }