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 2014/12/18 19:21:41 UTC

svn commit: r1646505 - in /subversion/trunk/subversion: libsvn_repos/load-fs-vtable.c svndumpfilter/svndumpfilter.c svnrdump/load_editor.c tests/cmdline/svndumpfilter_tests.py

Author: julianfoad
Date: Thu Dec 18 18:21:40 2014
New Revision: 1646505

URL: http://svn.apache.org/r1646505
Log:
Fix issue #4538 "'load' strips r1 references in mergeinfo": don't filter out
references to r1 in mergeinfo during 'svnadmin load' and 'svnrdump load'.

r1 is not an invalid mergeinfo source revision, merely an unlikely one, and
we don't treat it as invalid anywhere else.

This reverts r941438 which has been in place since v1.7.0. Note also that
this commit didn't remove r0 mergeinfo, only r1, despite the claim in its
log message.

* subversion/libsvn_repos/load-fs-vtable.c,
  subversion/svnrdump/load_editor.c
  (renumber_mergeinfo_revs): Don't filter out references to r1.
    Canonicalize mergeinfo, where previously the combination of sorting
    followed by filtering achieved canonicalization.

* subversion/svndumpfilter/svndumpfilter.c
  (adjust_mergeinfo): Remove a comment that said r1 is invalid.

* subversion/tests/cmdline/svndumpfilter_tests.py
  (filter_mergeinfo_revs_outside_of_dump_stream): Correct a comment that
    said r1 is invalid, written in r941408.

Modified:
    subversion/trunk/subversion/libsvn_repos/load-fs-vtable.c
    subversion/trunk/subversion/svndumpfilter/svndumpfilter.c
    subversion/trunk/subversion/svnrdump/load_editor.c
    subversion/trunk/subversion/tests/cmdline/svndumpfilter_tests.py

Modified: subversion/trunk/subversion/libsvn_repos/load-fs-vtable.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_repos/load-fs-vtable.c?rev=1646505&r1=1646504&r2=1646505&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_repos/load-fs-vtable.c (original)
+++ subversion/trunk/subversion/libsvn_repos/load-fs-vtable.c Thu Dec 18 18:21:40 2014
@@ -328,16 +328,7 @@ renumber_mergeinfo_revs(svn_string_t **f
       SVN_ERR(svn_mergeinfo_merge2(final_mergeinfo, predates_stream_mergeinfo,
                                    subpool, subpool));
 
-  SVN_ERR(svn_mergeinfo_sort(final_mergeinfo, subpool));
-
-  /* Mergeinfo revision sources for r0 and r1 are invalid; you can't merge r0
-     or r1.  However, svndumpfilter can be abused to produce r1 merge source
-     revs.  So if we encounter any, then strip them out, no need to put them
-     into the load target. */
-  SVN_ERR(svn_mergeinfo__filter_mergeinfo_by_ranges(&final_mergeinfo,
-                                                    final_mergeinfo,
-                                                    1, 0, FALSE,
-                                                    subpool, subpool));
+  SVN_ERR(svn_mergeinfo__canonicalize_ranges(final_mergeinfo, subpool));
 
   SVN_ERR(svn_mergeinfo_to_string(final_val, final_mergeinfo, pool));
   svn_pool_destroy(subpool);

Modified: subversion/trunk/subversion/svndumpfilter/svndumpfilter.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svndumpfilter/svndumpfilter.c?rev=1646505&r1=1646504&r2=1646505&view=diff
==============================================================================
--- subversion/trunk/subversion/svndumpfilter/svndumpfilter.c (original)
+++ subversion/trunk/subversion/svndumpfilter/svndumpfilter.c Thu Dec 18 18:21:40 2014
@@ -791,8 +791,7 @@ adjust_mergeinfo(svn_string_t **final_va
      start of all history.  E.g. if we dump -r100:400 then dumpfilter the
      result with --skip-missing-merge-sources, any mergeinfo with revision
      100 implies a change of -r99:100, but r99 is part of the history we
-     want filtered.  This is analogous to how r1 is always meaningless as
-     a merge source revision.
+     want filtered.
 
      If the oldest rev is r0 then there is nothing to filter. */
 

Modified: subversion/trunk/subversion/svnrdump/load_editor.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/load_editor.c?rev=1646505&r1=1646504&r2=1646505&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/load_editor.c (original)
+++ subversion/trunk/subversion/svnrdump/load_editor.c Thu Dec 18 18:21:40 2014
@@ -320,16 +320,7 @@ renumber_mergeinfo_revs(svn_string_t **f
                                    subpool, subpool));
     }
 
-  SVN_ERR(svn_mergeinfo_sort(final_mergeinfo, subpool));
-
-  /* Mergeinfo revision sources for r0 and r1 are invalid; you can't merge r0
-     or r1.  However, svndumpfilter can be abused to produce r1 merge source
-     revs.  So if we encounter any, then strip them out, no need to put them
-     into the load target. */
-  SVN_ERR(svn_mergeinfo__filter_mergeinfo_by_ranges(&final_mergeinfo,
-                                                    final_mergeinfo,
-                                                    1, 0, FALSE,
-                                                    subpool, subpool));
+  SVN_ERR(svn_mergeinfo__canonicalize_ranges(final_mergeinfo, subpool));
 
   SVN_ERR(svn_mergeinfo_to_string(final_val, final_mergeinfo, pool));
   svn_pool_destroy(subpool);

Modified: subversion/trunk/subversion/tests/cmdline/svndumpfilter_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svndumpfilter_tests.py?rev=1646505&r1=1646504&r2=1646505&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svndumpfilter_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svndumpfilter_tests.py Thu Dec 18 18:21:40 2014
@@ -323,9 +323,9 @@ def filter_mergeinfo_revs_outside_of_dum
   # --skip-missing-merge-soruces which should strip out any revisions < 6.
   # Then we'll load the filtered result into an empty repository.  This
   # should offset the incoming mergeinfo by -5.  In addition, any mergeinfo
-  # revisions that are adjusted to r1 should be removed because that implies
-  # a merge of -r0:1, which is impossible.  The resulting mergeinfo should
-  # look like this:
+  # referring to the initial revision in the dump file (r6) should be
+  # removed because the change it refers to (r5:6) is not wholly within the
+  # dumpfile.  The resulting mergeinfo should look like this:
   #
   #   Properties on 'branches/B1':
   #     svn:mergeinfo