Author: svn-role
Date: Fri Sep 20 04:00:38 2019
New Revision: 1867196

URL: http://svn.apache.org/viewvc?rev=1867196&view=rev
Log:
Merge r1853483 from trunk:

 * r1853483
   Fix #4760 "Missing children when svnadmin dump --include/exclude converts
   copy-dir to add-dir".
   Justification:
     The new-in-1.10 feature was broken.
   Votes:
     +1: julianfoad, stsp

Modified:
    subversion/branches/1.11.x/   (props changed)
    subversion/branches/1.11.x/STATUS
    subversion/branches/1.11.x/subversion/libsvn_repos/dump.c
    subversion/branches/1.11.x/subversion/tests/cmdline/svnadmin_tests.py

Propchange: subversion/branches/1.11.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Sep 20 04:00:38 2019
@@ -100,4 +100,4 @@
 /subversion/branches/verify-at-commit:1462039-1462408
 /subversion/branches/verify-keep-going:1439280-1546110
 /subversion/branches/wc-collate-path:1402685-1480384
-/subversion/trunk:1840990-1840991,1840995,1840997,1841059,1841079,1841091,1841098,1841136,1841180,1841272,1841481,1841524-1841525,1841567,1841600-1841602,1841606,1841719,1841725,1841731,1841736,1841742-1841743,1841753-1841754,1841822,1841850,1841867,1842090,1842222-1842223,1842334,1842814,1842827,1842829,1842877,1843888,1844882,1844987,1845204,1845212,1845261,1845408,1845555-1845556,1845559,1845577,1846299,1846403,1846406,1846704,1847181-1847182,1847188,1847264,1847377,1847572,1847596,1847598,1847697,1847922,1847924,1847946,1850348,1850621,1850651,1851676,1851687,1851791,1852013,1853761
+/subversion/trunk:1840990-1840991,1840995,1840997,1841059,1841079,1841091,1841098,1841136,1841180,1841272,1841481,1841524-1841525,1841567,1841600-1841602,1841606,1841719,1841725,1841731,1841736,1841742-1841743,1841753-1841754,1841822,1841850,1841867,1842090,1842222-1842223,1842334,1842814,1842827,1842829,1842877,1843888,1844882,1844987,1845204,1845212,1845261,1845408,1845555-1845556,1845559,1845577,1846299,1846403,1846406,1846704,1847181-1847182,1847188,1847264,1847377,1847572,1847596,1847598,1847697,1847922,1847924,1847946,1850348,1850621,1850651,1851676,1851687,1851791,1852013,1853483,1853761

Modified: subversion/branches/1.11.x/STATUS
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.11.x/STATUS?rev=1867196&r1=1867195&r2=1867196&view=diff
==============================================================================
--- subversion/branches/1.11.x/STATUS (original)
+++ subversion/branches/1.11.x/STATUS Fri Sep 20 04:00:38 2019
@@ -69,14 +69,6 @@ Veto-blocked changes:
 Approved changes:
 =================
 
- * r1853483
-   Fix #4760 "Missing children when svnadmin dump --include/exclude converts
-   copy-dir to add-dir".
-   Justification:
-     The new-in-1.10 feature was broken.
-   Votes:
-     +1: julianfoad, stsp
-
  * r1854072, r1854074, r1854216
    Fix issue #4806: Remove on-disk trees with read-only directories in them.
    Justification:

Modified: subversion/branches/1.11.x/subversion/libsvn_repos/dump.c
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.11.x/subversion/libsvn_repos/dump.c?rev=1867196&r1=1867195&r2=1867196&view=diff
==============================================================================
--- subversion/branches/1.11.x/subversion/libsvn_repos/dump.c (original)
+++ subversion/branches/1.11.x/subversion/libsvn_repos/dump.c Fri Sep 20 
04:00:38 2019
@@ -44,6 +44,7 @@
 #include "private/svn_sorts_private.h"
 #include "private/svn_utf_private.h"
 #include "private/svn_cache.h"
+#include "private/svn_fspath.h"
 
 #define ARE_VALID_COPY_ARGS(p,r) ((p) && SVN_IS_VALID_REVNUM(r))
 
@@ -1972,6 +1973,11 @@ dump_filter_authz_func(svn_boolean_t *al
 {
   dump_filter_baton_t *b = baton;
 
+  /* For some nodes (e.g. files under copied directory) PATH may be
+   * non-canonical (missing leading '/').  Canonicalize PATH before
+   * passing it to FILTER_FUNC. */
+  path = svn_fspath__canonicalize(path, pool);
+
   return svn_error_trace(b->filter_func(allowed, root, path, b->filter_baton,
                                         pool));
 }

Modified: subversion/branches/1.11.x/subversion/tests/cmdline/svnadmin_tests.py
URL: 
http://svn.apache.org/viewvc/subversion/branches/1.11.x/subversion/tests/cmdline/svnadmin_tests.py?rev=1867196&r1=1867195&r2=1867196&view=diff
==============================================================================
--- subversion/branches/1.11.x/subversion/tests/cmdline/svnadmin_tests.py 
(original)
+++ subversion/branches/1.11.x/subversion/tests/cmdline/svnadmin_tests.py Fri 
Sep 20 04:00:38 2019
@@ -3913,6 +3913,51 @@ def recover_prunes_rep_cache_when_disabl
 
   check_recover_prunes_rep_cache(sbox, enable_rep_sharing=False)
 
+@Issue(4760)
+def dump_include_copied_directory(sbox):
+  "include copied directory with nested nodes"
+
+  sbox.build(create_wc=False)
+
+  svntest.actions.run_and_verify_svn(svntest.verify.AnyOutput, [], "copy",
+                                     sbox.repo_url + '/A/D',
+                                     sbox.repo_url + '/COPY',
+                                     "-m", "Create branch.")
+
+  # Dump repository with only /COPY path included.
+  _, dump, _ = svntest.actions.run_and_verify_svnadmin(None, [],
+                                                       'dump', '-q',
+                                                       '--include', '/COPY',
+                                                       sbox.repo_dir)
+
+  # Load repository from dump.
+  sbox2 = sbox.clone_dependent()
+  sbox2.build(create_wc=False, empty=True)
+  load_and_verify_dumpstream(sbox2, None, [], None, False, dump)
+
+  # Check log.
+  expected_output = svntest.verify.RegexListOutput([
+    '-+\\n',
+    'r2\ .*\n',
+    # Only '/COPY' is added
+    re.escape('Changed paths:\n'),
+    re.escape('   A /COPY'),
+    re.escape('   A /COPY/G'),
+    re.escape('   A /COPY/G/pi'),
+    re.escape('   A /COPY/G/rho'),
+    re.escape('   A /COPY/G/tau'),
+    re.escape('   A /COPY/H'),
+    re.escape('   A /COPY/H/chi'),
+    re.escape('   A /COPY/H/omega'),
+    re.escape('   A /COPY/H/psi'),
+    re.escape('   A /COPY/gamma'),
+    '-+\\n',
+    'r1\ .*\n',
+    '-+\\n'
+  ])
+  svntest.actions.run_and_verify_svn(expected_output, [],
+                                     'log', '-v', '-q', sbox2.repo_url)
+
 ########################################################################
 # Run the tests
 
@@ -3990,6 +4035,7 @@ test_list = [ None,
               dump_no_canonicalize_svndate,
               recover_prunes_rep_cache_when_enabled,
               recover_prunes_rep_cache_when_disabled,
+              dump_include_copied_directory,
              ]
 
 if __name__ == '__main__':


Reply via email to