You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2010/03/31 16:25:18 UTC
svn commit: r929548 - in /subversion/branches/1.6.x: ./
subversion/libsvn_repos/ subversion/tests/cmdline/
subversion/tests/cmdline/svnadmin_tests_data/
Author: pburba
Date: Wed Mar 31 14:25:18 2010
New Revision: 929548
URL: http://svn.apache.org/viewvc?rev=929548&view=rev
Log:
On the 1.6.x branch: Revert the reintegration of the 1.6.x-issue3020 branch,
it contained a regression and was vetoed.
See http://svn.haxx.se/dev/archive-2010-03/0716.shtml
Removed:
subversion/branches/1.6.x/subversion/tests/cmdline/svnadmin_tests_data/mergeinfo_included_partial.dump
subversion/branches/1.6.x/subversion/tests/cmdline/svnadmin_tests_data/skeleton_repos.dump
Modified:
subversion/branches/1.6.x/ (props changed)
subversion/branches/1.6.x/CHANGES (props changed)
subversion/branches/1.6.x/STATUS
subversion/branches/1.6.x/subversion/libsvn_repos/load.c
subversion/branches/1.6.x/subversion/tests/cmdline/svnadmin_tests.py
Propchange: subversion/branches/1.6.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 31 14:25:18 2010
@@ -4,7 +4,6 @@
/subversion/branches/1.6.x-dirent-basename:876130-876262
/subversion/branches/1.6.x-future-proof:880259-884209
/subversion/branches/1.6.x-issue-3242-partial:916088-923778
-/subversion/branches/1.6.x-issue3020:927446-928793
/subversion/branches/1.6.x-issue3390:907042-927863
/subversion/branches/1.6.x-issue3432:878598-924025
/subversion/branches/1.6.x-issue3443:878597-879480
@@ -66,4 +65,4 @@
/subversion/branches/tc_url_rev:874351-874483
/subversion/branches/tree-conflicts:868291-873154
/subversion/branches/tree-conflicts-notify:873926-874008
-/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614,876628,876633,876641,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,877459,877472,877544,877553,877565,877568,87757
3,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878915,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376,879403,879631,879635-879636,879688,879709-879711,879747,879954,879961,880082,
880095,880105,880162,880226,880274-880275,880370,880450,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898963,899826,899828,900797,901752,902093,904301,904394,904594,905303,905326,906256,906305,917640,918211,921453,922516,927184,927243,927323,927328
+/subversion/trunk:875965,875968,876004,876012,876017,876019,876022,876024,876041-876042,876048,876051,876055-876056,876059,876083,876091,876097,876101,876109,876123-876125,876129,876132,876138,876160,876167,876175,876180,876185,876205,876223-876225,876230,876233,876252,876256,876283,876287,876312,876326-876327,876330,876366,876372,876374,876376,876383,876386,876442,876456-876457,876462-876464,876467,876469,876480,876486,876495-876497,876516-876518,876524,876526,876583,876601,876614,876628,876633,876641,876659,876687,876689,876705,876715,876726,876760,876763,876794,876804,876815-876816,876821,876825,876837,876840-876841,876843,876849,876857-876858,876862,876873,876890,876897,876905,876908,876925,876931,876934,876948-876949,876953,876987,876993,877011,877016,877028-877029,877038,877119,877127,877146,877157,877191,877195,877203,877211,877230,877234,877237,877243,877249,877259,877261,877304,877319,877407,877437,877441-877442,877453,877459,877472,877544,877553,877565,877568,87757
3,877593,877595,877597,877601,877612,877665,877667,877681,877692,877696,877701,877720,877730,877784,877793,877797,877809,877815,877819,877821,877842,877848,877853,877867,877869,877873,877901,877909,877916,877931,877942,877953,877964,877968,877970,877981-877982,878005,878013,878015,878020,878046,878053,878062,878074,878080,878089,878091,878093,878095,878127,878129,878131,878142,878173-878176,878216,878240,878242,878255,878269,878272,878279,878296-878297,878303,878321,878335,878338,878341,878343,878353,878364,878367-878368,878385,878399,878423,878426,878462,878484,878491,878498,878532,878595,878646,878659,878673,878682-878683,878690-878691,878693,878723,878760-878761,878873,878875,878877,878879,878905,878915,878924-878925,878946,878949,878955,878960,878970,878981,879001,879033,879056,879074,879076,879081-879082,879093,879105,879126,879148,879170,879198-879199,879201,879271,879293,879357,879375-879376,879403,879631,879635-879636,879688,879709-879711,879747,879954,879961,880082,
880095,880105,880162,880226,880274-880275,880370,880450,880474,880525-880526,880552,881905,884842,886164,886197,888715,888979,889081,889840,891672,892050,892085,895514,895653,896522,896915,898963,899826,899828,900797,901752,902093,904301,904394,904594,905303,905326,906256,906305,917640,918211,922516,927323,927328
Propchange: subversion/branches/1.6.x/CHANGES
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Mar 31 14:25:18 2010
@@ -4,7 +4,6 @@
/subversion/branches/1.6.x-dirent-basename/CHANGES:876130-876262
/subversion/branches/1.6.x-future-proof/CHANGES:880259-884209
/subversion/branches/1.6.x-issue-3242-partial/CHANGES:916088-923778
-/subversion/branches/1.6.x-issue3020/CHANGES:927446-928793
/subversion/branches/1.6.x-issue3390/CHANGES:907042-927863
/subversion/branches/1.6.x-issue3432/CHANGES:878598-924025
/subversion/branches/1.6.x-issue3443/CHANGES:878597-879480
@@ -65,4 +64,4 @@
/subversion/branches/tc_url_rev/CHANGES:874351-874483
/subversion/branches/tree-conflicts/CHANGES:868291-873154
/subversion/branches/tree-conflicts-notify/CHANGES:873926-874008
-/subversion/trunk/CHANGES:837701-841355,875962-901365,901752,904301,904394,904594,905303,905326,917640,918211,921453,922516,927184,927243,927323,927328
+/subversion/trunk/CHANGES:837701-841355,875962-901365,901752,904301,904394,904594,905303,905326,917640,918211,922516,927323,927328
Modified: subversion/branches/1.6.x/STATUS
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/STATUS?rev=929548&r1=929547&r2=929548&view=diff
==============================================================================
--- subversion/branches/1.6.x/STATUS (original)
+++ subversion/branches/1.6.x/STATUS Wed Mar 31 14:25:18 2010
@@ -213,5 +213,23 @@ Veto-blocked changes:
-1: stsp, rhuijben ("/proc/%ld/stat" is ugly and Linux-specific -
would just getenv("WINDOWID") work instead?)
+ * r921453, r927184, r927243
+ Fix reopened issue #3020 'Reflect dropped/renumbered revisions in
+ svn:mergeinfo data during svnadmin load'
+ Justification:
+ Prior to this fix, when loading a partial dump with mergeinfo, the
+ resulting mergeinfo in the target repository could refer to non-existent
+ revisions or revisions that have nothing to do with the merge source
+ in the original repository. The original fix for issue assumed that
+ the dump stream was for a complete repository.
+ Notes:
+ r921453 and 927184 are tests, r927243 is the fix.
+ Branch:
+ ^/subversion/branches/1.6.x-issue3020
+ Votes:
+ +1: rhuijben, kameshj
+ -1: pburba (There is a regression with this fix, see
+ http://svn.haxx.se/dev/archive-2010-03/0716.shtml)
+
Approved changes:
=================
Modified: subversion/branches/1.6.x/subversion/libsvn_repos/load.c
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/libsvn_repos/load.c?rev=929548&r1=929547&r2=929548&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/libsvn_repos/load.c (original)
+++ subversion/branches/1.6.x/subversion/libsvn_repos/load.c Wed Mar 31 14:25:18 2010
@@ -50,18 +50,7 @@ struct parse_baton
enum svn_repos_load_uuid uuid_action;
const char *parent_dir;
apr_pool_t *pool;
-
- /* A hash mapping copy-from revisions and mergeinfo range revisions
- (svn_revnum_t *) in the dump stream to their corresponding revisions
- (svn_revnum_t *) in the loaded repository. The hash and its
- contents are allocated in POOL. */
apr_hash_t *rev_map;
-
- /* The oldest and youngest old revisions loaded so far from the dump
- stream. If no revisions have been loaded yet, then both are set to
- SVN_INVALID_REVNUM. */
- svn_revnum_t oldest_old_rev;
- svn_revnum_t youngest_old_rev;
};
struct revision_baton
@@ -260,10 +249,9 @@ prefix_mergeinfo_paths(svn_string_t **me
}
-/* Examine the mergeinfo in INITIAL_VAL, if necessary remove revisions that
- refer to history outside of the dump stream and renumber mergeinfo
- rangelists to point to the appropriate revisions in the loaded repository.
- Return the (possibly new) mergeinfo in *FINAL_VAL (allocated from POOL). */
+/* Examine the mergeinfo in INITIAL_VAL, renumber revisions in rangelists
+ as appropriate, and return the (possibly new) mergeinfo in *FINAL_VAL
+ (allocated from POOL). */
static svn_error_t *
renumber_mergeinfo_revs(svn_string_t **final_val,
const svn_string_t *initial_val,
@@ -276,15 +264,6 @@ renumber_mergeinfo_revs(svn_string_t **f
apr_hash_index_t *hi;
SVN_ERR(svn_mergeinfo_parse(&mergeinfo, initial_val->data, subpool));
-
- /* Issue #3020: If the dump stream represents only part of a repository,
- then mergeinfo in the stream may refer to revisions outside of the
- stream. Remove any such invalid ranges before renumbering. */
- SVN_ERR(svn_mergeinfo__filter_mergeinfo_by_ranges(
- &mergeinfo, mergeinfo,
- rb->pb->youngest_old_rev, rb->pb->oldest_old_rev - 1,
- subpool));
-
for (hi = apr_hash_first(NULL, mergeinfo); hi; hi = apr_hash_next(hi))
{
const char *merge_source;
@@ -307,28 +286,7 @@ renumber_mergeinfo_revs(svn_string_t **f
rev_from_map = apr_hash_get(pb->rev_map, &range->start,
sizeof(svn_revnum_t));
if (rev_from_map && SVN_IS_VALID_REVNUM(*rev_from_map))
- {
range->start = *rev_from_map;
- }
- else if (range->start == pb->oldest_old_rev - 1)
- {
- /* Since the start revision of svn_merge_range_t are not
- inclusive there is one possible valid start revision that
- won't be found in the PB->REV_MAP mapping of load stream
- revsions to loaded revisions: The revision immediately
- preceeding the oldest revision from the load stream.
- This is a valid revision for mergeinfo, but not a valid
- copy from revision (which PB->REV_MAP also maps for) so it
- will never be in the mapping.
-
- If that is what we have here, then find the mapping for the
- oldest rev from the load stream and subtract 1 to get the
- renumbered, non-inclusive, start revision. */
- rev_from_map = apr_hash_get(pb->rev_map, &pb->oldest_old_rev,
- sizeof(svn_revnum_t));
- if (rev_from_map && SVN_IS_VALID_REVNUM(*rev_from_map))
- range->start = *rev_from_map - 1;
- }
rev_from_map = apr_hash_get(pb->rev_map, &range->end,
sizeof(svn_revnum_t));
@@ -1243,31 +1201,19 @@ set_node_property(void *baton,
if (strcmp(name, SVN_PROP_MERGEINFO) == 0)
{
- /* If we haven't yet committed any revisions then *any* mergeinfo
- will refer to the wrong revisions or revisions that don't exist.
- Either way none of this mergeinfo can be valid, so remove it all. */
- if (apr_hash_count(rb->pb->rev_map) == 0)
- {
- value = NULL;
- }
- else
+ /* Renumber mergeinfo as appropriate. */
+ svn_string_t *renumbered_mergeinfo;
+ SVN_ERR(renumber_mergeinfo_revs(&renumbered_mergeinfo, value, rb,
+ nb->pool));
+ value = renumbered_mergeinfo;
+ if (parent_dir)
{
- /* Renumber mergeinfo as appropriate. */
- svn_string_t *renumbered_mergeinfo;
-
- SVN_ERR(renumber_mergeinfo_revs(&renumbered_mergeinfo, value, rb,
- nb->pool));
- value = renumbered_mergeinfo;
- if (parent_dir)
- {
- /* Prefix the merge source paths with PARENT_DIR. */
- /* ASSUMPTION: All source paths are included in the dump
- stream. */
- svn_string_t *mergeinfo_val;
- SVN_ERR(prefix_mergeinfo_paths(&mergeinfo_val, value,
- parent_dir, nb->pool));
- value = mergeinfo_val;
- }
+ /* Prefix the merge source paths with PARENT_DIR. */
+ /* ASSUMPTION: All source paths are included in the dump stream. */
+ svn_string_t *mergeinfo_val;
+ SVN_ERR(prefix_mergeinfo_paths(&mergeinfo_val, value, parent_dir,
+ nb->pool));
+ value = mergeinfo_val;
}
}
@@ -1403,13 +1349,6 @@ close_revision(void *baton)
return err;
}
- /* Update the youngest revision committed from the load stream (or both
- if this is the first revision committed). */
- if (SVN_IS_VALID_REVNUM(pb->youngest_old_rev))
- pb->youngest_old_rev = *old_rev;
- else
- pb->oldest_old_rev = pb->youngest_old_rev = *old_rev;
-
/* Run post-commit hook, if so commanded. */
if (pb->use_post_commit_hook)
{
@@ -1491,7 +1430,6 @@ svn_repos_get_fs_build_parser2(const svn
pb->parent_dir = parent_dir;
pb->pool = pool;
pb->rev_map = apr_hash_make(pool);
- pb->youngest_old_rev = pb->oldest_old_rev = SVN_INVALID_REVNUM;
*callbacks = parser;
*parse_baton = pb;
Modified: subversion/branches/1.6.x/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/1.6.x/subversion/tests/cmdline/svnadmin_tests.py?rev=929548&r1=929547&r2=929548&view=diff
==============================================================================
--- subversion/branches/1.6.x/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/1.6.x/subversion/tests/cmdline/svnadmin_tests.py Wed Mar 31 14:25:18 2010
@@ -25,7 +25,6 @@ import sys
import svntest
from svntest.verify import SVNExpectedStdout, SVNExpectedStderr
from svntest.verify import SVNUnexpectedStderr
-from svntest.main import SVN_PROP_MERGEINFO
# (abbreviation)
Skip = svntest.testcase.Skip
@@ -805,22 +804,22 @@ def reflect_dropped_renumbered_revs(sbox
'/toplevel')
# Verify the svn:mergeinfo properties
- svntest.actions.run_and_verify_svn(None, ["/trunk:2-4\n"],
+ svntest.actions.run_and_verify_svn(None, ["/trunk:1-4\n"],
[], 'propget', 'svn:mergeinfo',
sbox.repo_url + '/branch2')
svntest.actions.run_and_verify_svn(None, ["/branch1:5-9\n"],
[], 'propget', 'svn:mergeinfo',
sbox.repo_url + '/trunk')
- svntest.actions.run_and_verify_svn(None, ["/toplevel/trunk:11-13\n"],
+ svntest.actions.run_and_verify_svn(None, ["/toplevel/trunk:1-13\n"],
[], 'propget', 'svn:mergeinfo',
sbox.repo_url + '/toplevel/branch2')
svntest.actions.run_and_verify_svn(None, ["/toplevel/branch1:14-18\n"],
[], 'propget', 'svn:mergeinfo',
sbox.repo_url + '/toplevel/trunk')
- svntest.actions.run_and_verify_svn(None, ["/toplevel/trunk:11-12\n"],
+ svntest.actions.run_and_verify_svn(None, ["/toplevel/trunk:1-12\n"],
[], 'propget', 'svn:mergeinfo',
sbox.repo_url + '/toplevel/branch1')
- svntest.actions.run_and_verify_svn(None, ["/trunk:2-3\n"],
+ svntest.actions.run_and_verify_svn(None, ["/trunk:1-3\n"],
[], 'propget', 'svn:mergeinfo',
sbox.repo_url + '/branch1')
@@ -951,152 +950,6 @@ def verify_with_invalid_revprops(sbox):
".*Malformed file"):
raise svntest.Failure
-#----------------------------------------------------------------------
-# More testing for issue #3020 'Reflect dropped/renumbered revisions in
-# svn:mergeinfo data during svnadmin load'
-#
-# Specifically, test that loading a partial dump file filters out
-# mergeinfo that refers to revisions that are older than the oldest
-# loaded revisions -- See
-# http://subversion.tigris.org/issues/show_bug.cgi?id=3020#desc10.
-def drop_mergeinfo_outside_of_dump_stream(sbox):
- "filter mergeinfo revs outside of dump stream"
-
- test_create(sbox)
-
- # Load a partial dump into an existing repository.
- #
- # Picture == 1k words:
- #
- # The existing repos loaded from skeleton_repos.dump looks like this:
- #
- # Projects/ (Added r1)
- # README (Added r2)
- # Project-X (Added r3)
- # Project-Y (Added r4)
- # Project-Z (Added r5)
- # docs/ (Added r6)
- # README (Added r6)
- #
- # The dump file 'mergeinfo_included_partial.dump' is a dump of r6:HEAD of
- # the following repos:
- # __________________________________________
- # | |
- # | ____________________________|_____
- # | | | |
- # trunk---r2---r3-----r5---r6-------r8---r9---------------> | |
- # r1 | | | | | |
- # intial | | | |______ | |
- # import copy | copy | merge merge
- # | | | merge (r5) (r8)
- # | | | (r9) | |
- # | | | | | |
- # | | V V | |
- # | | branches/B2-------r11---r12----> | |
- # | | r7 |____| | |
- # | | | | |
- # | merge |___ | |
- # | (r6) | | |
- # | |_________________ | | |
- # | | merge | |
- # | | (r11-12) | |
- # | | | | |
- # V V V | |
- # branches/B1-------------------r10--------r13--> | |
- # r4 | |
- # | V V
- # branches/B1/B/E------------------------------r14---r15->
- #
- #
- # The mergeinfo on the complete repos in the preceeding repos looks like:
- #
- # Properties on 'branches/B1':
- # svn:mergeinfo
- # /branches/B2:11-12
- # /trunk:6,9
- # Properties on 'branches/B1/B/E':
- # svn:mergeinfo
- # /branches/B2/B/E:11-12
- # /trunk/B/E:5-6,8-9
- # Properties on 'branches/B2':
- # svn:mergeinfo
- # /trunk:9
- #
- # If we were to load the dump of r6:HEAD into an empty repository, we'd
- # expect any references to revisions <r6 to be removed entirely (since
- # that history no longer exists) and the the remaining mergeinfo should
- # have its revisions offset by -5. The resulting mergeinfo should look
- # like this:
- #
- # Properties on 'branches/B1':
- # svn:mergeinfo
- # /branches/B2:6-7
- # /trunk:1,4
- # Properties on 'branches/B1/B/E':
- # svn:mergeinfo
- # /branches/B2/B/E:6-7
- # /trunk/B/E:1,3-4
- # Properties on 'branches/B2':
- # svn:mergeinfo
- # /trunk:4
- #
- # But here we will load it into the existing skeleton repository in the
- # Projects/Project-X directory. Since we are loading the dump into a
- # subtree, all the merge sources should be prefixed with the path to
- # that subtree, i.e. 'Projects/Project-X', compared to the mergeinfo above.
- # In addition, since the skeleton repos already has 6 revisions, we expect
- # all the remaining revisions to be offset +6 from the above. That should
- # result in this mergeinfo:
- #
- # Properties on 'Projects/Project-X/branches/B1':
- # svn:mergeinfo
- # /Projects/Project-X/branches/B2:12-13
- # /Projects/Project-X/trunk:7,10
- # Properties on 'Projects/Project-X/branches/B1/B/E':
- # svn:mergeinfo
- # /Projects/Project-X/branches/B2/B/E:12-13
- # /Projects/Project-X/trunk/B/E:7,9-10
- # Properties on 'Projects/Project-X/branches/B2':
- # svn:mergeinfo
- # /Projects/Project-X/trunk:10
-
- # Load the skeleton dump:
- dumpfile1 = svntest.main.file_read(
- os.path.join(os.path.dirname(sys.argv[0]),
- 'svnadmin_tests_data',
- 'skeleton_repos.dump'))
- load_and_verify_dumpstream(sbox, [], [], None, dumpfile1, '--ignore-uuid')
-
- # Load the partial repository with mergeinfo dump:
- dumpfile2 = svntest.main.file_read(
- os.path.join(os.path.dirname(sys.argv[0]),
- 'svnadmin_tests_data',
- 'mergeinfo_included_partial.dump'))
- load_and_verify_dumpstream(sbox, [], [], None, dumpfile2, '--ignore-uuid',
- '--parent-dir', '/Projects/Project-X')
-
- # Check the resulting mergeinfo.
- #
- # TODO: Use pg -vR, which would make the expected output easier on the eyes.
- # Not using it because pg -vR on windows is outputting <CR><CR><LF>
- # after the first line of multiline mergeinfo, which breaks the
- # comparison, e.g.:
- #
- # Properties on 'Projects/Project-X/branches/B1/B/E':<CR><LF>
- # svn:mergeinfo<CR><LF>
- # /Projects/Project-X/branches/B2:12-13<CR><CR><LF>
- # ^^^
- # /Projects/Project-X/trunk:7,10<CR><LF>
- url = sbox.repo_url + '/Projects/Project-X/branches/'
- expected_output = svntest.verify.UnorderedOutput([
- url + "B1 - /Projects/Project-X/branches/B2:12-13\n",
- "/Projects/Project-X/trunk:7,10\n",
- url + "B2 - /Projects/Project-X/trunk:10\n",
- url + "B1/B/E - /Projects/Project-X/branches/B2/B/E:12-13\n",
- "/Projects/Project-X/trunk/B/E:7,9-10\n"])
- svntest.actions.run_and_verify_svn(None, expected_output, [],
- 'propget', 'svn:mergeinfo', '-R',
- sbox.repo_url)
########################################################################
# Run the tests
@@ -1124,7 +977,6 @@ test_list = [ None,
svntest.main.is_fs_type_fsfs),
create_in_repo_subdir,
verify_with_invalid_revprops,
- drop_mergeinfo_outside_of_dump_stream,
]
if __name__ == '__main__':