The attached patch adds a new test, currently marked as XFail, for an issue I recently discovered and posted about over on the users list ("Root-relative svn:externals result in error exporting a specific revision"). In a nutshell, if you are exporting from a working copy with the -r option, and the revision you are exporting has one or more svn:externals with ^/ syntax, svn will exit with an assertion failure while it is exporting the externals.
The log message is at the top of the patch. Doug
Add test for exporting a specific revision with root-relative externals. Exporting a specific revision from a working copy with root-relative externals currently results in an assertion failure. This adds a test for that case. * subversion/tests/cmdline/export_tests.py (export_revision_with_root_relative_external): Add new test. (test_list): Register the new test. Index: subversion/tests/cmdline/export_tests.py =================================================================== --- subversion/tests/cmdline/export_tests.py (revision 1802077) +++ subversion/tests/cmdline/export_tests.py (working copy) @@ -1070,7 +1070,39 @@ def export_file_externals2(sbox): expected_output, expected_disk) +@XFail() +def export_revision_with_root_relative_external(sbox): + "export a revision with root-relative external" + sbox.build() + wc_dir = sbox.wc_dir + + # Set 'svn:externals' property in 'A/C' to 'A/B/E/alpha'(file external), + C_path = os.path.join(wc_dir, 'A', 'C') + externals_prop = "^/A/B/E/alpha exfile_alpha" + + tmp_f = sbox.get_tempname('prop') + svntest.main.file_append(tmp_f, externals_prop) + svntest.main.run_svn(None, 'ps', '-F', tmp_f, 'svn:externals', C_path) + svntest.main.run_svn(None,'ci', '-m', 'log msg', '--quiet', C_path) + + # Update the working copy to receive file external + svntest.main.run_svn(None, 'up', wc_dir) + + # Export revision 2 from URL + export_target = sbox.add_wc_path('export_url') + svntest.actions.run_and_verify_svn(None, [], + 'export', sbox.repo_url, export_target, + '-r', 2) + + # Export revision 2 from WC + # Fails (canonicalize: Assertion `*src != '/'' failed) + export_target = sbox.add_wc_path('export_wc') + svntest.actions.run_and_verify_svn(None, [], + 'export', sbox.wc_dir, export_target, + '-r', 2) + + ######################################################################## # Run the tests @@ -1107,6 +1139,7 @@ test_list = [ None, export_custom_keywords, export_file_external, export_file_externals2, + export_revision_with_root_relative_external, ] if __name__ == '__main__':