You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/08/11 18:43:31 UTC

svn commit: r984468 [23/25] - in /subversion/branches/ignore-mergeinfo: ./ build/ build/generator/ build/generator/templates/ notes/ notes/tree-conflicts/ notes/wc-ng/ subversion/bindings/javahl/native/ subversion/bindings/javahl/src/org/apache/subvers...

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/dir_prop_change.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/dir_prop_change.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/dir_prop_change.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/dir_prop_change.dump Wed Aug 11 16:43:22 2010
@@ -16,11 +16,6 @@ Revision-number: 1
 Prop-content-length: 105
 Content-length: 105
 
-K 7
-svn:log
-V 5
-blah
-
 K 10
 svn:author
 V 6
@@ -29,6 +24,11 @@ K 8
 svn:date
 V 27
 2005-12-21T23:12:58.931794Z
+K 7
+svn:log
+V 5
+blah
+
 PROPS-END
 
 Node-path: 

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/file-dir-file.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/file-dir-file.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/file-dir-file.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/file-dir-file.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 105
 Content-length: 105
 
-K 7
-svn:log
-V 5
-stuff
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2006-04-14T22:50:10.459753Z
+K 7
+svn:log
+V 5
+stuff
 PROPS-END
 
 Node-path: a.txt

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/modified-in-place.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/modified-in-place.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/modified-in-place.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/modified-in-place.dump Wed Aug 11 16:43:22 2010
@@ -16,11 +16,6 @@ Revision-number: 1
 Prop-content-length: 114
 Content-length: 114
 
-K 7
-svn:log
-V 13
-Added a file
-
 K 10
 svn:author
 V 6
@@ -29,6 +24,11 @@ K 8
 svn:date
 V 27
 2005-11-09T19:58:23.561942Z
+K 7
+svn:log
+V 13
+Added a file
+
 PROPS-END
 
 Node-path: foo.txt
@@ -48,10 +48,6 @@ Revision-number: 2
 Prop-content-length: 112
 Content-length: 112
 
-K 7
-svn:log
-V 11
-modified it
 K 10
 svn:author
 V 6
@@ -60,6 +56,10 @@ K 8
 svn:date
 V 27
 2005-11-09T19:58:38.412025Z
+K 7
+svn:log
+V 11
+modified it
 PROPS-END
 
 Node-path: foo.txt

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/no-author.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/no-author.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/no-author.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/no-author.dump Wed Aug 11 16:43:22 2010
@@ -16,15 +16,15 @@ Revision-number: 1
 Prop-content-length: 77
 Content-length: 77
 
+K 8
+svn:date
+V 27
+2006-10-27T18:55:49.840787Z
 K 7
 svn:log
 V 4
 foo
 
-K 8
-svn:date
-V 27
-2006-10-27T18:55:49.840787Z
 PROPS-END
 
 Node-path: trunk

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/repo_with_copy_of_root_dir.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/repo_with_copy_of_root_dir.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/repo_with_copy_of_root_dir.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/repo_with_copy_of_root_dir.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 104
 Content-length: 104
 
-K 7
-svn:log
-V 4
-wwww
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2009-06-29T12:23:55.134926Z
+K 7
+svn:log
+V 4
+wwww
 PROPS-END
 
 Node-path: full

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/revprops.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/revprops.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/revprops.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/revprops.dump Wed Aug 11 16:43:22 2010
@@ -20,22 +20,22 @@ Revision-number: 1
 Prop-content-length: 132
 Content-length: 132
 
-K 7
-svn:log
-V 0
-
 K 10
 svn:author
 V 3
 lgo
-K 13
-svn:mergeinfo
-V 10
-/trunk:1:2
 K 8
 svn:date
 V 27
 2007-12-07T20:53:40.322712Z
+K 7
+svn:log
+V 0
+
+K 13
+svn:mergeinfo
+V 10
+/trunk:1:2
 PROPS-END
 
 Node-path: test.txt
@@ -64,10 +64,6 @@ Revision-number: 2
 Prop-content-length: 124
 Content-length: 124
 
-K 7
-svn:log
-V 26
-Import greek tree on trunk
 K 10
 svn:author
 V 3
@@ -76,6 +72,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:56:45.939703Z
+K 7
+svn:log
+V 26
+Import greek tree on trunk
 PROPS-END
 
 Node-path: trunk/A
@@ -310,10 +310,6 @@ Revision-number: 3
 Prop-content-length: 127
 Content-length: 127
 
-K 7
-svn:log
-V 29
-* trunk/A/D/H/psi: extra line
 K 10
 svn:author
 V 3
@@ -322,6 +318,10 @@ K 8
 svn:date
 V 27
 2007-12-07T21:12:26.232653Z
+K 7
+svn:log
+V 29
+* trunk/A/D/H/psi: extra line
 PROPS-END
 
 Node-path: trunk/A/D/H/psi

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-move-and-modify.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-move-and-modify.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-move-and-modify.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-move-and-modify.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 115
 Content-length: 115
 
-K 7
-svn:log
-V 17
-Add base folders.
 K 10
 svn:author
 V 3
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2008-01-02T20:33:05.279494Z
+K 7
+svn:log
+V 17
+Add base folders.
 PROPS-END
 
 Node-path: project1
@@ -70,10 +70,6 @@ Revision-number: 2
 Prop-content-length: 110
 Content-length: 110
 
-K 7
-svn:log
-V 12
-Add folders.
 K 10
 svn:author
 V 3
@@ -82,6 +78,10 @@ K 8
 svn:date
 V 27
 2008-01-02T20:33:06.265712Z
+K 7
+svn:log
+V 12
+Add folders.
 PROPS-END
 
 Node-path: project1/trunk/A
@@ -115,10 +115,6 @@ Revision-number: 3
 Prop-content-length: 106
 Content-length: 106
 
-K 7
-svn:log
-V 9
-Add file.
 K 10
 svn:author
 V 3
@@ -127,6 +123,10 @@ K 8
 svn:date
 V 27
 2008-01-02T20:33:07.283685Z
+K 7
+svn:log
+V 9
+Add file.
 PROPS-END
 
 Node-path: project1/trunk/A/B/C/file.txt
@@ -147,10 +147,6 @@ Revision-number: 4
 Prop-content-length: 117
 Content-length: 117
 
-K 7
-svn:log
-V 19
-Add file file2.txt.
 K 10
 svn:author
 V 3
@@ -159,6 +155,10 @@ K 8
 svn:date
 V 27
 2008-01-02T20:33:08.278330Z
+K 7
+svn:log
+V 19
+Add file file2.txt.
 PROPS-END
 
 Node-path: project1/trunk/A/B/C/file2.txt
@@ -179,10 +179,6 @@ Revision-number: 5
 Prop-content-length: 127
 Content-length: 127
 
-K 7
-svn:log
-V 29
-move project and modify file.
 K 10
 svn:author
 V 3
@@ -191,6 +187,10 @@ K 8
 svn:date
 V 27
 2008-01-02T20:33:12.238116Z
+K 7
+svn:log
+V 29
+move project and modify file.
 PROPS-END
 
 Node-path: branches
@@ -268,10 +268,6 @@ Revision-number: 6
 Prop-content-length: 115
 Content-length: 115
 
-K 7
-svn:log
-V 17
-removed project1.
 K 10
 svn:author
 V 3
@@ -280,6 +276,10 @@ K 8
 svn:date
 V 27
 2008-01-02T20:33:14.261412Z
+K 7
+svn:log
+V 17
+removed project1.
 PROPS-END
 
 Node-path: project1

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 97
 Content-length: 97
 
-K 7
-svn:log
-V 0
-
 K 10
 svn:author
 V 3
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:53:40.322712Z
+K 7
+svn:log
+V 0
+
 PROPS-END
 
 Node-path: test.txt
@@ -55,10 +55,6 @@ Revision-number: 2
 Prop-content-length: 124
 Content-length: 124
 
-K 7
-svn:log
-V 26
-Import greek tree on trunk
 K 10
 svn:author
 V 3
@@ -67,6 +63,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:56:45.939703Z
+K 7
+svn:log
+V 26
+Import greek tree on trunk
 PROPS-END
 
 Node-path: trunk/A
@@ -289,10 +289,6 @@ Revision-number: 3
 Prop-content-length: 127
 Content-length: 127
 
-K 7
-svn:log
-V 29
-* trunk/A/D/H/psi: extra line
 K 10
 svn:author
 V 3
@@ -301,6 +297,10 @@ K 8
 svn:date
 V 27
 2007-12-07T21:12:26.232653Z
+K 7
+svn:log
+V 29
+* trunk/A/D/H/psi: extra line
 PROPS-END
 
 Node-path: trunk/A/D/H/psi
@@ -318,10 +318,6 @@ Revision-number: 4
 Prop-content-length: 128
 Content-length: 128
 
-K 7
-svn:log
-V 26
-make changes on A and iota
 K 10
 svn:author
 V 7
@@ -330,6 +326,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:25:05.711998Z
+K 7
+svn:log
+V 26
+make changes on A and iota
 PROPS-END
 
 Node-path: trunk/A
@@ -362,10 +362,6 @@ Revision-number: 5
 Prop-content-length: 116
 Content-length: 116
 
-K 7
-svn:log
-V 14
-Renamed A to B
 K 10
 svn:author
 V 7
@@ -374,6 +370,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:26:14.639561Z
+K 7
+svn:log
+V 14
+Renamed A to B
 PROPS-END
 
 Node-path: trunk/B
@@ -391,10 +391,6 @@ Revision-number: 6
 Prop-content-length: 116
 Content-length: 116
 
-K 7
-svn:log
-V 14
-Moved B/D to A
 K 10
 svn:author
 V 7
@@ -403,6 +399,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:27:02.055549Z
+K 7
+svn:log
+V 14
+Moved B/D to A
 PROPS-END
 
 Node-path: trunk/A
@@ -420,10 +420,6 @@ Revision-number: 7
 Prop-content-length: 125
 Content-length: 125
 
-K 7
-svn:log
-V 23
-Added property to trunk
 K 10
 svn:author
 V 7
@@ -432,6 +428,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:28:07.300170Z
+K 7
+svn:log
+V 23
+Added property to trunk
 PROPS-END
 
 Node-path: trunk

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-A-changes.expected.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 97
 Content-length: 97
 
-K 7
-svn:log
-V 0
-
 K 10
 svn:author
 V 3
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:53:40.322712Z
+K 7
+svn:log
+V 0
+
 PROPS-END
 
 Node-path: trunk
@@ -43,10 +43,6 @@ Revision-number: 2
 Prop-content-length: 124
 Content-length: 124
 
-K 7
-svn:log
-V 26
-Import greek tree on trunk
 K 10
 svn:author
 V 3
@@ -55,6 +51,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:56:45.939703Z
+K 7
+svn:log
+V 26
+Import greek tree on trunk
 PROPS-END
 
 Node-path: trunk/A
@@ -276,10 +276,6 @@ Revision-number: 3
 Prop-content-length: 127
 Content-length: 127
 
-K 7
-svn:log
-V 29
-* trunk/A/D/H/psi: extra line
 K 10
 svn:author
 V 3
@@ -288,6 +284,10 @@ K 8
 svn:date
 V 27
 2007-12-07T21:12:26.232653Z
+K 7
+svn:log
+V 29
+* trunk/A/D/H/psi: extra line
 PROPS-END
 
 Node-path: trunk/A/D/H/psi
@@ -306,10 +306,6 @@ Revision-number: 4
 Prop-content-length: 128
 Content-length: 128
 
-K 7
-svn:log
-V 26
-make changes on A and iota
 K 10
 svn:author
 V 7
@@ -318,6 +314,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:25:05.711998Z
+K 7
+svn:log
+V 26
+make changes on A and iota
 PROPS-END
 
 Node-path: trunk/A
@@ -337,10 +337,6 @@ Revision-number: 5
 Prop-content-length: 116
 Content-length: 116
 
-K 7
-svn:log
-V 14
-Renamed A to B
 K 10
 svn:author
 V 7
@@ -349,6 +345,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:26:14.639561Z
+K 7
+svn:log
+V 14
+Renamed A to B
 PROPS-END
 
 Node-path: trunk/A
@@ -359,10 +359,6 @@ Revision-number: 6
 Prop-content-length: 116
 Content-length: 116
 
-K 7
-svn:log
-V 14
-Moved B/D to A
 K 10
 svn:author
 V 7
@@ -371,6 +367,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:27:02.055549Z
+K 7
+svn:log
+V 14
+Moved B/D to A
 PROPS-END
 
 Node-path: trunk/A
@@ -496,10 +496,6 @@ Revision-number: 7
 Prop-content-length: 125
 Content-length: 125
 
-K 7
-svn:log
-V 23
-Added property to trunk
 K 10
 svn:author
 V 7
@@ -508,6 +504,10 @@ K 8
 svn:date
 V 27
 2007-12-09T21:28:07.300170Z
+K 7
+svn:log
+V 23
+Added property to trunk
 PROPS-END
 
 Node-path: trunk

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 97
 Content-length: 97
 
-K 7
-svn:log
-V 0
-
 K 10
 svn:author
 V 3
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:53:40.322712Z
+K 7
+svn:log
+V 0
+
 PROPS-END
 
 Node-path: test.txt
@@ -55,10 +55,6 @@ Revision-number: 2
 Prop-content-length: 124
 Content-length: 124
 
-K 7
-svn:log
-V 26
-Import greek tree on trunk
 K 10
 svn:author
 V 3
@@ -67,6 +63,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:56:45.939703Z
+K 7
+svn:log
+V 26
+Import greek tree on trunk
 PROPS-END
 
 Node-path: trunk/A
@@ -289,10 +289,6 @@ Revision-number: 3
 Prop-content-length: 127
 Content-length: 127
 
-K 7
-svn:log
-V 29
-* trunk/A/D/H/psi: extra line
 K 10
 svn:author
 V 3
@@ -301,6 +297,10 @@ K 8
 svn:date
 V 27
 2007-12-07T21:12:26.232653Z
+K 7
+svn:log
+V 29
+* trunk/A/D/H/psi: extra line
 PROPS-END
 
 Node-path: trunk/A/D/H/psi

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/svnsync-trunk-only.expected.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 97
 Content-length: 97
 
-K 7
-svn:log
-V 0
-
 K 10
 svn:author
 V 3
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:53:40.322712Z
+K 7
+svn:log
+V 0
+
 PROPS-END
 
 Node-path: trunk
@@ -43,10 +43,6 @@ Revision-number: 2
 Prop-content-length: 124
 Content-length: 124
 
-K 7
-svn:log
-V 26
-Import greek tree on trunk
 K 10
 svn:author
 V 3
@@ -55,6 +51,10 @@ K 8
 svn:date
 V 27
 2007-12-07T20:56:45.939703Z
+K 7
+svn:log
+V 26
+Import greek tree on trunk
 PROPS-END
 
 Node-path: trunk/A
@@ -289,10 +289,6 @@ Revision-number: 3
 Prop-content-length: 127
 Content-length: 127
 
-K 7
-svn:log
-V 29
-* trunk/A/D/H/psi: extra line
 K 10
 svn:author
 V 3
@@ -301,6 +297,10 @@ K 8
 svn:date
 V 27
 2007-12-07T21:12:26.232653Z
+K 7
+svn:log
+V 29
+* trunk/A/D/H/psi: extra line
 PROPS-END
 
 Node-path: trunk/A/D/H/psi

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-empty-trunk.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-empty-trunk.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-empty-trunk.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-empty-trunk.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 105
 Content-length: 105
 
-K 7
-svn:log
-V 5
-setup
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2005-11-04T23:04:15.060966Z
+K 7
+svn:log
+V 5
+setup
 PROPS-END
 
 Node-path: tags
@@ -52,10 +52,6 @@ Revision-number: 2
 Prop-content-length: 106
 Content-length: 106
 
-K 7
-svn:log
-V 6
-tag it
 K 10
 svn:author
 V 6
@@ -64,6 +60,10 @@ K 8
 svn:date
 V 27
 2005-11-04T23:04:32.222710Z
+K 7
+svn:log
+V 6
+tag it
 PROPS-END
 
 Node-path: tags/an-empty-tag

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-dir.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-dir.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-dir.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-dir.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 105
 Content-length: 105
 
-K 7
-svn:log
-V 5
-stuff
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2005-11-05T00:11:07.194039Z
+K 7
+svn:log
+V 5
+stuff
 PROPS-END
 
 Node-path: tags
@@ -61,10 +61,6 @@ Revision-number: 2
 Prop-content-length: 111
 Content-length: 111
 
-K 7
-svn:log
-V 10
-more stuff
 K 10
 svn:author
 V 6
@@ -73,6 +69,10 @@ K 8
 svn:date
 V 27
 2005-11-05T00:11:18.910470Z
+K 7
+svn:log
+V 10
+more stuff
 PROPS-END
 
 Node-path: tags/a-tag

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 115
 Content-length: 115
 
-K 7
-svn:log
-V 14
-initial layout
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2005-11-07T20:22:08.601650Z
+K 7
+svn:log
+V 14
+initial layout
 PROPS-END
 
 Node-path: branches
@@ -61,10 +61,6 @@ Revision-number: 2
 Prop-content-length: 111
 Content-length: 111
 
-K 7
-svn:log
-V 10
-add a file
 K 10
 svn:author
 V 6
@@ -73,6 +69,10 @@ K 8
 svn:date
 V 27
 2005-11-07T20:22:25.607033Z
+K 7
+svn:log
+V 10
+add a file
 PROPS-END
 
 Node-path: trunk/foo.txt
@@ -92,11 +92,6 @@ Revision-number: 3
 Prop-content-length: 113
 Content-length: 113
 
-K 7
-svn:log
-V 12
-make a tag.
-
 K 10
 svn:author
 V 6
@@ -105,6 +100,11 @@ K 8
 svn:date
 V 27
 2005-11-07T20:22:46.490796Z
+K 7
+svn:log
+V 12
+make a tag.
+
 PROPS-END
 
 Node-path: tags/a-tag-with-file-contents

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file2.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file2.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file2.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-trunk-with-file2.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 115
 Content-length: 115
 
-K 7
-svn:log
-V 14
-initial layout
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2005-11-07T22:09:30.282710Z
+K 7
+svn:log
+V 14
+initial layout
 PROPS-END
 
 Node-path: branches
@@ -58,13 +58,9 @@ PROPS-END
 
 
 Revision-number: 2
-Prop-content-length: 106
-Content-length: 106
+Prop-content-length: 111
+Content-length: 111
 
-K 7
-svn:log
-V 6
-a file
 K 10
 svn:author
 V 6
@@ -73,6 +69,10 @@ K 8
 svn:date
 V 27
 2005-11-07T22:09:44.146564Z
+K 7
+svn:log
+V 10
+add a file
 PROPS-END
 
 Node-path: trunk/foo.txt
@@ -92,11 +92,6 @@ Revision-number: 3
 Prop-content-length: 113
 Content-length: 113
 
-K 7
-svn:log
-V 12
-Make a tag.
-
 K 10
 svn:author
 V 6
@@ -105,6 +100,11 @@ K 8
 svn:date
 V 27
 2005-11-07T22:10:03.753668Z
+K 7
+svn:log
+V 12
+make a tag.
+
 PROPS-END
 
 Node-path: tags/a-tag

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-with-modified-file.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-with-modified-file.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-with-modified-file.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/tag-with-modified-file.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 115
 Content-length: 115
 
-K 7
-svn:log
-V 14
-initial layout
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2005-11-07T22:20:16.583093Z
+K 7
+svn:log
+V 14
+initial layout
 PROPS-END
 
 Node-path: branches
@@ -61,11 +61,6 @@ Revision-number: 2
 Prop-content-length: 112
 Content-length: 112
 
-K 7
-svn:log
-V 11
-add a file
-
 K 10
 svn:author
 V 6
@@ -74,6 +69,11 @@ K 8
 svn:date
 V 27
 2005-11-07T22:20:39.840815Z
+K 7
+svn:log
+V 11
+add a file
+
 PROPS-END
 
 Node-path: trunk/foo.txt
@@ -93,11 +93,6 @@ Revision-number: 3
 Prop-content-length: 126
 Content-length: 126
 
-K 7
-svn:log
-V 25
-tag with a modified file
-
 K 10
 svn:author
 V 6
@@ -106,6 +101,11 @@ K 8
 svn:date
 V 27
 2005-11-07T22:21:15.332479Z
+K 7
+svn:log
+V 25
+tag with a modified file
+
 PROPS-END
 
 Node-path: tags/a-tag-with-mods

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/url-encoding-bug.dump
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/url-encoding-bug.dump?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/url-encoding-bug.dump (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svnsync_tests_data/url-encoding-bug.dump Wed Aug 11 16:43:22 2010
@@ -16,10 +16,6 @@ Revision-number: 1
 Prop-content-length: 101
 Content-length: 101
 
-K 7
-svn:log
-V 1
-,
 K 10
 svn:author
 V 6
@@ -28,6 +24,10 @@ K 8
 svn:date
 V 27
 2006-10-23T20:26:00.932678Z
+K 7
+svn:log
+V 1
+,
 PROPS-END
 
 Node-path: foo%20bar.txt
@@ -47,10 +47,6 @@ Revision-number: 2
 Prop-content-length: 101
 Content-length: 101
 
-K 7
-svn:log
-V 1
-,
 K 10
 svn:author
 V 6
@@ -59,6 +55,10 @@ K 8
 svn:date
 V 27
 2006-10-23T20:26:12.565554Z
+K 7
+svn:log
+V 1
+,
 PROPS-END
 
 Node-path: foo bar.txt
@@ -78,10 +78,6 @@ Revision-number: 3
 Prop-content-length: 102
 Content-length: 102
 
-K 7
-svn:log
-V 1
-,
 K 10
 svn:author
 V 7
@@ -90,6 +86,10 @@ K 8
 svn:date
 V 27
 2006-10-23T20:52:11.378819Z
+K 7
+svn:log
+V 1
+,
 PROPS-END
 
 Node-path: foo%20bar.txt

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/actions.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/actions.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/actions.py Wed Aug 11 16:43:22 2010
@@ -38,7 +38,13 @@ def no_sleep_for_timestamps():
 def do_sleep_for_timestamps():
   os.environ['SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_SLEEP_FOR_TIMESTAMPS'] = 'no'
 
-def setup_pristine_repository():
+def no_relocate_validation():
+  os.environ['SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_RELOCATE_VALIDATION'] = 'yes'
+
+def do_relocate_validation():
+  os.environ['SVN_I_LOVE_CORRUPTED_WORKING_COPIES_SO_DISABLE_RELOCATE_VALIDATION'] = 'no'
+
+def setup_pristine_greek_repository():
   """Create the pristine repository and 'svn import' the greek tree"""
 
   # these directories don't exist out of the box, so we may have to create them
@@ -49,8 +55,8 @@ def setup_pristine_repository():
     os.makedirs(main.general_repo_dir) # this also creates all the intermediate dirs
 
   # If there's no pristine repos, create one.
-  if not os.path.exists(main.pristine_dir):
-    main.create_repos(main.pristine_dir)
+  if not os.path.exists(main.pristine_greek_repos_dir):
+    main.create_repos(main.pristine_greek_repos_dir)
 
     # if this is dav, gives us access rights to import the greek tree.
     if main.is_ra_type_dav():
@@ -66,7 +72,7 @@ def setup_pristine_repository():
     exit_code, output, errput = main.run_svn(None, 'import', '-m',
                                              'Log message for revision 1.',
                                              main.greek_dump_dir,
-                                             main.pristine_url)
+                                             main.pristine_greek_repos_url)
 
     # check for any errors from the import
     if len(errput):
@@ -99,9 +105,9 @@ def setup_pristine_repository():
 
     # Finally, disallow any changes to the "pristine" repos.
     error_msg = "Don't modify the pristine repository"
-    create_failing_hook(main.pristine_dir, 'start-commit', error_msg)
-    create_failing_hook(main.pristine_dir, 'pre-lock', error_msg)
-    create_failing_hook(main.pristine_dir, 'pre-revprop-change', error_msg)
+    create_failing_hook(main.pristine_greek_repos_dir, 'start-commit', error_msg)
+    create_failing_hook(main.pristine_greek_repos_dir, 'pre-lock', error_msg)
+    create_failing_hook(main.pristine_greek_repos_dir, 'pre-revprop-change', error_msg)
 
 
 ######################################################################
@@ -110,7 +116,7 @@ def guarantee_empty_repository(path):
   """Guarantee that a local svn repository exists at PATH, containing
   nothing."""
 
-  if path == main.pristine_dir:
+  if path == main.pristine_greek_repos_dir:
     print("ERROR:  attempt to overwrite the pristine repos!  Aborting.")
     sys.exit(1)
 
@@ -121,19 +127,19 @@ def guarantee_empty_repository(path):
 # Used by every test, so that they can run independently of  one
 # another. Every time this routine is called, it recursively copies
 # the `pristine repos' to a new location.
-# Note: make sure setup_pristine_repository was called once before
+# Note: make sure setup_pristine_greek_repository was called once before
 # using this function.
 def guarantee_greek_repository(path):
   """Guarantee that a local svn repository exists at PATH, containing
   nothing but the greek-tree at revision 1."""
 
-  if path == main.pristine_dir:
+  if path == main.pristine_greek_repos_dir:
     print("ERROR:  attempt to overwrite the pristine repos!  Aborting.")
     sys.exit(1)
 
   # copy the pristine repository to PATH.
   main.safe_rmtree(path)
-  if main.copy_repos(main.pristine_dir, path, 1):
+  if main.copy_repos(main.pristine_greek_repos_dir, path, 1):
     print("ERROR:  copying repository failed.")
     sys.exit(1)
 
@@ -276,14 +282,29 @@ def run_and_verify_load(repo_dir, dump_f
                         None, expected_stderr)
 
 
-def run_and_verify_dump(repo_dir):
+def run_and_verify_dump(repo_dir, deltas=False):
   "Runs 'svnadmin dump' and reports any errors, returning the dump content."
-  exit_code, output, errput = main.run_svnadmin('dump', repo_dir)
+  if deltas:
+    exit_code, output, errput = main.run_svnadmin('dump', '--deltas',
+                                                  repo_dir)
+  else:
+    exit_code, output, errput = main.run_svnadmin('dump', repo_dir)
   verify.verify_outputs("Missing expected output(s)", output, errput,
                         verify.AnyOutput, verify.AnyOutput)
   return output
 
 
+def run_and_verify_svnrdump(dumpfile_content, expected_stdout,
+                            expected_stderr, expected_exit, *varargs):
+  """Runs 'svnrdump dump|load' depending on dumpfile_content and
+  reports any errors."""
+  exit_code, output, err = main.run_svnrdump(dumpfile_content, *varargs)
+
+  verify.verify_outputs("Unexpected output", output, err,
+                        expected_stdout, expected_stderr)
+  verify.verify_exit_code("Unexpected return code", exit_code, expected_exit)
+  return output
+
 def load_repo(sbox, dumpfile_path = None, dump_str = None):
   "Loads the dumpfile into sbox"
   if not dump_str:
@@ -310,12 +331,13 @@ def load_repo(sbox, dumpfile_path = None
 #
 
 
-def run_and_verify_checkout(URL, wc_dir_name, output_tree, disk_tree,
-                            singleton_handler_a = None,
-                            a_baton = None,
-                            singleton_handler_b = None,
-                            b_baton = None,
-                            *args):
+def run_and_verify_checkout2(do_remove,
+                             URL, wc_dir_name, output_tree, disk_tree,
+                             singleton_handler_a = None,
+                             a_baton = None,
+                             singleton_handler_b = None,
+                             b_baton = None,
+                             *args):
   """Checkout the URL into a new directory WC_DIR_NAME. *ARGS are any
   extra optional args to the checkout subcommand.
 
@@ -326,8 +348,8 @@ def run_and_verify_checkout(URL, wc_dir_
   function's doc string for more details.  Return if successful, raise
   on failure.
 
-  WC_DIR_NAME is deleted if present unless the '--force' option is passed
-  in *ARGS."""
+  WC_DIR_NAME is deleted if DO_REMOVE is True.
+  """
 
   if isinstance(output_tree, wc.State):
     output_tree = output_tree.old_tree()
@@ -337,7 +359,7 @@ def run_and_verify_checkout(URL, wc_dir_
   # Remove dir if it's already there, unless this is a forced checkout.
   # In that case assume we want to test a forced checkout's toleration
   # of obstructing paths.
-  if '--force' not in args:
+  if do_remove:
     main.safe_rmtree(wc_dir_name)
 
   # Checkout and make a tree of the output, using l:foo/p:bar
@@ -368,6 +390,28 @@ def run_and_verify_checkout(URL, wc_dir_
     tree.dump_tree_script(actual, wc_dir_name + os.sep)
     raise
 
+def run_and_verify_checkout(URL, wc_dir_name, output_tree, disk_tree,
+                            singleton_handler_a = None,
+                            a_baton = None,
+                            singleton_handler_b = None,
+                            b_baton = None,
+                            *args):
+  """Same as run_and_verify_checkout2(), but without the DO_REMOVE arg.
+  WC_DIR_NAME is deleted if present unless the '--force' option is passed
+  in *ARGS."""
+
+
+  # Remove dir if it's already there, unless this is a forced checkout.
+  # In that case assume we want to test a forced checkout's toleration
+  # of obstructing paths.
+  return run_and_verify_checkout2(('--force' not in args),
+                                  URL, wc_dir_name, output_tree, disk_tree,
+                                  singleton_handler_a,
+                                  a_baton,
+                                  singleton_handler_b,
+                                  b_baton,
+                                  *args)
+
 
 def run_and_verify_export(URL, export_dir_name, output_tree, disk_tree,
                           *args):
@@ -1515,16 +1559,15 @@ def run_and_verify_resolved(expected_pat
 def make_repo_and_wc(sbox, create_wc = True, read_only = False):
   """Create a fresh 'Greek Tree' repository and check out a WC from it.
 
-  If read_only is False, a dedicated repository will be created, named
-  TEST_NAME. The repository will live in the global dir 'general_repo_dir'.
-  If read_only is True the pristine repository will be used.
+  If READ_ONLY is False, a dedicated repository will be created, at the path
+  SBOX.repo_dir.  If READ_ONLY is True, the pristine repository will be used.
+  In either case, SBOX.repo_url is assumed to point to the repository that
+  will be used.
 
   If create_wc is True, a dedicated working copy will be checked out from
-  the repository, named TEST_NAME. The wc directory will live in the global
-  dir 'general_wc_dir'.
+  the repository, at the path SBOX.wc_dir.
 
-  Both variables 'general_repo_dir' and 'general_wc_dir' are defined at the
-  top of this test suite.)  Returns on success, raises on failure."""
+  Returns on success, raises on failure."""
 
   # Create (or copy afresh) a new repos with a greek tree in it.
   if not read_only:
@@ -1576,25 +1619,28 @@ def get_virginal_state(wc_dir, rev):
 
   return state
 
-def remove_admin_tmp_dir(wc_dir):
-  "Remove the tmp directory within the administrative directory."
-
-  tmp_path = os.path.join(wc_dir, main.get_admin_name(), 'tmp')
-  ### Any reason not to use main.safe_rmtree()?
-  os.rmdir(os.path.join(tmp_path, 'prop-base'))
-  os.rmdir(os.path.join(tmp_path, 'props'))
-  os.rmdir(os.path.join(tmp_path, 'text-base'))
-  os.rmdir(tmp_path)
-
 # Cheap administrative directory locking
 def lock_admin_dir(wc_dir):
   "Lock a SVN administrative directory"
+  dot_svn = svntest.main.get_admin_name()
+  root_path = wc_dir
+  relpath = ''
+
+  while True:
+    db_path = os.path.join(root_path, dot_svn, 'wc.db')
+    try:
+      db = svntest.sqlite3.connect(db_path)
+      break
+    except: pass
+    head, tail = os.path.split(root_path)
+    if head == root_path:
+      raise svntest.Failure("No DB for " + wc_dir)
+    root_path = head
+    relpath = os.path.join(tail, relpath).replace(os.path.sep, '/').rstrip('/')
 
-  db = svntest.sqlite3.connect(os.path.join(wc_dir, main.get_admin_name(),
-                                            'wc.db'))
   db.execute('insert into wc_lock (wc_id, local_dir_relpath, locked_levels) '
              + 'values (?, ?, ?)',
-             (1, '', 0))
+             (1, relpath, 0))
   db.commit()
   db.close()
 
@@ -2265,7 +2311,8 @@ def deep_trees_run_tests_scheme_for_upda
 
   j = os.path.join
 
-  sbox.build()
+  if not sbox.is_built():
+    sbox.build()
   wc_dir = sbox.wc_dir
 
 
@@ -2506,7 +2553,8 @@ def deep_trees_run_tests_scheme_for_swit
 
   j = os.path.join
 
-  sbox.build()
+  if not sbox.is_built():
+    sbox.build()
   wc_dir = sbox.wc_dir
 
 

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/factory.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/factory.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/factory.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/factory.py Wed Aug 11 16:43:22 2010
@@ -660,6 +660,8 @@ class TestFactory:
     del runargs[url_arg.argnr]
 
     wc = wc_arg.wc
+    if not wc:
+      raise Failure("Unexpected argument ordering to factory's 'svn switch'?")
 
     pychdir = self.chdir(do_chdir, wc)
 

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/main.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/main.py Wed Aug 11 16:43:22 2010
@@ -152,6 +152,7 @@ def url2pathname(path):
 svn_binary = os.path.abspath('../../svn/svn' + _exe)
 svnadmin_binary = os.path.abspath('../../svnadmin/svnadmin' + _exe)
 svnlook_binary = os.path.abspath('../../svnlook/svnlook' + _exe)
+svnrdump_binary = os.path.abspath('../../svnrdump/svnrdump' + _exe)
 svnsync_binary = os.path.abspath('../../svnsync/svnsync' + _exe)
 svnversion_binary = os.path.abspath('../../svnversion/svnversion' + _exe)
 svndumpfilter_binary = os.path.abspath('../../svndumpfilter/svndumpfilter' + \
@@ -160,7 +161,7 @@ entriesdump_binary = os.path.abspath('en
 
 # Location to the pristine repository, will be calculated from test_area_url
 # when we know what the user specified for --url.
-pristine_url = None
+pristine_greek_repos_url = None
 
 # Global variable to track all of our options
 options = None
@@ -186,7 +187,7 @@ general_wc_dir = os.path.join(work_dir, 
 temp_dir = os.path.join(work_dir, 'local_tmp')
 
 # (derivatives of the tmp dir.)
-pristine_dir = os.path.join(temp_dir, "repos")
+pristine_greek_repos_dir = os.path.join(temp_dir, "repos")
 greek_dump_dir = os.path.join(temp_dir, "greekfiles")
 default_config_dir = os.path.abspath(os.path.join(temp_dir, "config"))
 
@@ -268,6 +269,24 @@ def get_admin_name():
   else:
     return '.svn'
 
+def wc_is_singledb(wcpath):
+  """Temporary function that checks whether a working copy directory looks
+  like it is part of a single-db working copy."""
+
+  pristine = os.path.join(wcpath, get_admin_name(), 'pristine')
+  if not os.path.exists(pristine):
+    return True
+
+  # Now we must be looking at a multi-db WC dir or the root dir of a
+  # single-DB WC.  Sharded 'pristine' dir => single-db, else => multi-db.
+  for name in os.listdir(pristine):
+    if len(name) == 2:
+      return True
+    elif len(name) == 40:
+      return False
+
+  return False
+
 def get_start_commit_hook_path(repo_dir):
   "Return the path of the start-commit-hook conf file in REPO_DIR."
 
@@ -576,6 +595,16 @@ def run_svnlook(*varargs):
   list of lines (including line terminators)."""
   return run_command(svnlook_binary, 1, 0, *varargs)
 
+def run_svnrdump(stdin_input, *varargs):
+  """Run svnrdump with VARARGS, returns exit code as int; stdout, stderr as
+  list of lines (including line terminators)."""
+  if stdin_input:
+    return run_command_stdin(svnrdump_binary, 0, 1, 0, stdin_input,
+                             *(_with_auth(_with_config_dir(varargs))))
+  else:
+    return run_command(svnrdump_binary, 1, 0,
+                       *(_with_auth(_with_config_dir(varargs))))
+
 def run_svnsync(*varargs):
   """Run svnsync with VARARGS, returns exit code as int; stdout, stderr as
   list of lines (including line terminators)."""
@@ -592,9 +621,6 @@ def run_entriesdump(path):
   # to stdout in verbose mode.
   exit_code, stdout_lines, stderr_lines = spawn_process(entriesdump_binary,
                                                         0, 0, None, path)
-  if options.verbose:
-    ### finish the CMD output
-    print
   if exit_code or stderr_lines:
     ### report on this? or continue to just skip it?
     return None
@@ -605,6 +631,13 @@ def run_entriesdump(path):
   exec(''.join([line for line in stdout_lines if not line.startswith("DBG:")]))
   return entries
 
+def run_entriesdump_subdirs(path):
+  """Run the entries-dump helper, returning a list of directory names."""
+  # use spawn_process rather than run_command to avoid copying all the data
+  # to stdout in verbose mode.
+  exit_code, stdout_lines, stderr_lines = spawn_process(entriesdump_binary,
+                                                        0, 0, None, '--subdirs', path)
+  return [line.strip() for line in stdout_lines if not line.startswith("DBG:")]
 
 # Chmod recursively on a whole subtree
 def chmod_tree(path, mode, mask):
@@ -1009,6 +1042,9 @@ def is_fs_type_fsfs():
 def is_os_windows():
   return os.name == 'nt'
 
+def is_windows_type_dav():
+  return is_os_windows() and is_ra_type_dav()
+
 def is_posix_os():
   return os.name == 'posix'
 
@@ -1156,6 +1192,7 @@ class TestRunner:
                                       str(self.index)
 
     svntest.actions.no_sleep_for_timestamps()
+    svntest.actions.do_relocate_validation()
 
     saved_dir = os.getcwd()
     try:
@@ -1291,7 +1328,7 @@ def _create_parser():
   parser = optparse.OptionParser(usage=usage)
   parser.add_option('-l', '--list', action='store_true', dest='list_tests',
                     help='Print test doc strings instead of running them')
-  parser.add_option('-v', '--verbose', action='store_true',
+  parser.add_option('-v', '--verbose', action='store_true', dest='verbose',
                     help='Print binary command-lines (not with --quiet)')
   parser.add_option('-q', '--quiet', action='store_true',
                     help='Print only unexpected results (not with --verbose)')
@@ -1382,7 +1419,7 @@ def run_tests(test_list, serial_only = F
         appropriate exit code.
   """
 
-  global pristine_url
+  global pristine_greek_repos_url
   global svn_binary
   global svnadmin_binary
   global svnlook_binary
@@ -1446,8 +1483,8 @@ def run_tests(test_list, serial_only = F
       parser.error("invalid test number, range of numbers, " +
                    "or function '%s'\n" % arg)
 
-  # Calculate pristine_url from test_area_url.
-  pristine_url = options.test_area_url + '/' + pathname2url(pristine_dir)
+  # Calculate pristine_greek_repos_url from test_area_url.
+  pristine_greek_repos_url = options.test_area_url + '/' + pathname2url(pristine_greek_repos_dir)
 
   if options.use_jsvn:
     if options.svn_bin is None:
@@ -1500,7 +1537,7 @@ def run_tests(test_list, serial_only = F
     create_config_dir(default_config_dir)
 
     # Setup the pristine repository
-    svntest.actions.setup_pristine_repository()
+    svntest.actions.setup_pristine_greek_repository()
 
   # Run the tests.
   exit_code = _internal_run_tests(test_list, testnums, options.parallel)

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/sandbox.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/sandbox.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/sandbox.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/sandbox.py Wed Aug 11 16:43:22 2010
@@ -51,8 +51,8 @@ class Sandbox:
       self.repo_url = (svntest.main.options.test_area_url + '/'
                        + svntest.main.pathname2url(self.repo_dir))
     else:
-      self.repo_dir = svntest.main.pristine_dir
-      self.repo_url = svntest.main.pristine_url
+      self.repo_dir = svntest.main.pristine_greek_repos_dir
+      self.repo_url = svntest.main.pristine_greek_repos_url
 
     ### TODO: Move this into to the build() method
     # For dav tests we need a single authz file which must be present,
@@ -96,11 +96,8 @@ class Sandbox:
        and check out a WC from it (unless CREATE_WC is false). Change the
        sandbox's name to NAME. See actions.make_repo_and_wc() for details."""
     self._set_name(name, read_only)
-    if svntest.actions.make_repo_and_wc(self, create_wc, read_only):
-      raise svntest.Failure("Could not build repository and sandbox '%s'"
-                            % self.name)
-    else:
-      self._is_built = True
+    svntest.actions.make_repo_and_wc(self, create_wc, read_only)
+    self._is_built = True
 
   def add_test_path(self, path, remove=True):
     self.test_paths.append(path)
@@ -133,6 +130,20 @@ class Sandbox:
     self.add_test_path(path, remove)
     return path
 
+  tempname_offs = 0 # Counter for get_tempname
+
+  def get_tempname(self, prefix='tmp'):
+    """Get a stable name for a temporary file that will be removed after
+       running the test"""
+
+    dir = self.add_wc_path('tmp')
+    if not os.path.exists(dir):
+      os.mkdir(dir)
+
+    self.tempname_offs = self.tempname_offs + 1
+
+    return os.path.join(dir, '%s-%s' % (prefix, self.tempname_offs))
+
   def cleanup_test_paths(self):
     "Clean up detritus from this sandbox, and any dependents."
     if self.dependents:
@@ -141,7 +152,7 @@ class Sandbox:
         sbox.cleanup_test_paths()
     # cleanup all test specific working copies and repositories
     for path in self.test_paths:
-      if not path is svntest.main.pristine_dir:
+      if not path is svntest.main.pristine_greek_repos_dir:
         _cleanup_test_path(path)
 
   def is_built(self):
@@ -153,6 +164,19 @@ class Sandbox:
       wc_dir = self.wc_dir
     return os.path.join(wc_dir, svntest.wc.to_ospath(relpath))
 
+  def redirected_root_url(self, temporary=False):
+    """If TEMPORARY is set, return the URL which should be configured
+       to temporarily redirect to the root of this repository;
+       otherwise, return the URL which should be configured to
+       permanent redirect there.  (Assumes that the sandbox is not
+       read-only.)"""
+    assert not self.read_only
+    assert self.repo_url.startswith("http")
+    parts = self.repo_url.rsplit('/', 1)
+    return '%s/REDIRECT-%s-%s' % (parts[0],
+                                  temporary and 'TEMP' or 'PERM',
+                                  parts[1])
+    
   def simple_commit(self, target=None):
     assert not self.read_only
     if target is None:
@@ -220,6 +244,6 @@ def _cleanup_test_path(path, retrying=Fa
   try:
     svntest.main.safe_rmtree(path)
   except:
-    if svntest.main.verbose_mode:
+    if svntest.main.options.verbose:
       print("WARNING: cleanup failed, will try again later")
     _deferred_test_paths.append(path)

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/tree.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/tree.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/tree.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/tree.py Wed Aug 11 16:43:22 2010
@@ -257,7 +257,7 @@ class SVNTreeNode:
       path = path[1:]
 
     line = prepend
-    line += "%-20s: Item(" % ("'%s'" % path)
+    line += "%-20s: Item(" % ("'%s'" % path.replace(os.sep, '/'))
     comma = False
 
     mime_type = self.props.get("svn:mime-type")

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/verify.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/verify.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/verify.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/verify.py Wed Aug 11 16:43:22 2010
@@ -25,6 +25,7 @@
 ######################################################################
 
 import re, sys
+from difflib import unified_diff
 
 import svntest
 
@@ -279,19 +280,33 @@ def display_lines(message, label, expect
     output = 'EXPECTED %s' % label
     if expected_is_regexp:
       output += ' (regexp)'
+      expected = [expected + '\n']
     if expected_is_unordered:
       output += ' (unordered)'
     output += ':'
     print(output)
     for x in expected:
       sys.stdout.write(x)
-    if expected_is_regexp:
-      sys.stdout.write('\n')
   if actual is not None:
     print('ACTUAL %s:' % label)
     for x in actual:
       sys.stdout.write(x)
 
+  # Additionally print unified diff
+  if not expected_is_regexp:
+    print('DIFF ' + ' '.join(output.split(' ')[1:]))
+
+    if type(expected) is str:
+      expected = [expected]
+
+    if type(actual) is str:
+      actual = [actual]
+
+    for x in unified_diff(expected, actual,
+                          fromfile="EXPECTED %s" % label,
+                          tofile="ACTUAL %s" % label):
+      sys.stdout.write(x)
+
 def compare_and_display_lines(message, label, expected, actual,
                               raisable=None):
   """Compare two sets of output lines, and print them if they differ,

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/wc.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/wc.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/wc.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/svntest/wc.py Wed Aug 11 16:43:22 2010
@@ -323,6 +323,10 @@ class State:
           if item.entry_rev is not None:
             item.wc_rev = item.entry_rev
             item.entry_rev = None
+          # status might vary as well, e.g. when a directory is missing
+          if item.entry_status is not None:
+            item.status = item.entry_status
+            item.entry_status = None
       if item.writelocked:
         # we don't contact the repository, so our only information is what
         # is in the working copy. 'K' means we have one and it matches the
@@ -551,17 +555,14 @@ class State:
     desc = { }
     dot_svn = svntest.main.get_admin_name()
 
-    for dirpath, dirs, files in os.walk(base):
-      if dot_svn in dirs:
-        # don't visit the .svn subdir
-        dirs.remove(dot_svn)
-      else:
-        # this is not a versioned directory. remove all subdirectories since
-        # we don't want to visit them. then skip this directory.
-        dirs[:] = []
-        continue
+    for dirpath in svntest.main.run_entriesdump_subdirs(base):
+
+      if base == '.' and dirpath != '.':
+        dirpath = '.' + os.path.sep + dirpath
 
       entries = svntest.main.run_entriesdump(dirpath)
+      if entries is None:
+        continue
 
       if dirpath == '.':
         parent = ''
@@ -603,12 +604,6 @@ class State:
         if implied_url and implied_url != entry.url:
           item.switched = 'S'
 
-      # only recurse into directories found in this entries. remove any
-      # which are not mentioned.
-      unmentioned = set(dirs) - set(entries.keys())
-      for subdir in unmentioned:
-        dirs.remove(subdir)
-
     return cls('', desc)
 
 
@@ -621,7 +616,8 @@ class StateItem:
   """
 
   def __init__(self, contents=None, props=None,
-               status=None, verb=None, wc_rev=None, entry_rev=None,
+               status=None, verb=None, wc_rev=None,
+               entry_rev=None, entry_status=None,
                locked=None, copied=None, switched=None, writelocked=None,
                treeconflict=None):
     # provide an empty prop dict if it wasn't provided
@@ -644,9 +640,10 @@ class StateItem:
     self.verb = verb
     # The base revision number of the node in the WC, as a string.
     self.wc_rev = wc_rev
-    # This one will be set when we expect the wc_rev to differ from the one
-    # found ni the entries code.
+    # These will be set when we expect the wc_rev/status to differ from those
+    # found in the entries code.
     self.entry_rev = entry_rev
+    self.entry_status = entry_status
     # For the following attributes, the value is the status character of that
     # field from 'svn status', except using value None instead of status ' '.
     self.locked = locked
@@ -820,31 +817,41 @@ def text_base_path(file_path):
   """Return the path to the text-base file for the versioned file
      FILE_PATH."""
   dot_svn = svntest.main.get_admin_name()
-  parent_path, file_name = os.path.split(file_path)
+  root_path, relpath = os.path.split(file_path)
 
-  ### Temporary until the wc format changes.
-  text_base_path = os.path.join(parent_path, dot_svn, 'text-base')
-  if os.path.exists(text_base_path):
-    return os.path.join(text_base_path, file_name + '.svn-base')
+  while True:
+    db_path = os.path.join(root_path, dot_svn, 'wc.db')
+    try:
+      db = svntest.sqlite3.connect(db_path)
+      break
+    except: pass
+    head, tail = os.path.split(root_path)
+    if head == root_path:
+      raise svntest.Failure("No DB for " + file_path)
+    root_path = head
+    relpath = os.path.join(tail, relpath).replace(os.sep, '/')
 
-  db_path = os.path.join(parent_path, dot_svn, 'wc.db')
-  db = svntest.sqlite3.connect(db_path)
   c = db.cursor()
   c.execute("""select checksum from working_node
-               where local_relpath = '""" + file_name + """'""")
+               where local_relpath = '""" + relpath + """'""")
   checksum = c.fetchone()
   if checksum is None:
     c.execute("""select checksum from base_node
-                 where local_relpath = '""" + file_name + """'""")
-    checksum = c.fetchone()[0]
-  if checksum is not None and checksum[0:6] == "$md5 $":
-    c.execute("""select checksum from pristine
-                 where md5_checksum = '""" + checksum + """'""")
+                 where local_relpath = '""" + relpath + """'""")
     checksum = c.fetchone()[0]
-  if checksum is None:
-    raise svntest.Failure("No SHA1 checksum for " + file_path)
+  if checksum is None or checksum[0:6] != "$sha1$":
+    raise svntest.Failure("No SHA1 checksum for " + relpath)
   db.close()
-  return os.path.join(parent_path, dot_svn, 'pristine', checksum[6:])
+
+  checksum = checksum[6:]
+  # Calculate single DB location
+  fn = os.path.join(root_path, dot_svn, 'pristine', checksum[0:2], checksum)
+
+  if os.path.isfile(fn):
+    return fn
+
+  # Calculate per dir location
+  return os.path.join(root_path, dot_svn, 'pristine', checksum)
 
 
 # ------------

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/switch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/switch_tests.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/switch_tests.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/switch_tests.py Wed Aug 11 16:43:22 2010
@@ -38,6 +38,7 @@ XFail = svntest.testcase.XFail
 Item = svntest.wc.StateItem
 
 from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
+from externals_tests import change_external
 
 
 ### Bummer.  It would be really nice to have easy access to the URL
@@ -566,7 +567,10 @@ def relocate_deleted_missing_copied(sbox
     'A/D2/H/omega' : Item(status='  ', wc_rev='-', copied='+'),
     'A/D2/H/psi'   : Item(status='  ', wc_rev='-', copied='+'),
     })
-  expected_status.tweak('A/B/F', status='! ', wc_rev='?')
+  if svntest.main.wc_is_singledb(wc_dir):
+    expected_status.tweak('A/B/F', status='! ', wc_rev='1')
+  else:
+    expected_status.tweak('A/B/F', status='! ', wc_rev='?')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Relocate
@@ -580,20 +584,28 @@ def relocate_deleted_missing_copied(sbox
 
   # Deleted and missing entries should be preserved, so update should
   # show only A/B/F being reinstated
-  expected_output = svntest.wc.State(wc_dir, {
-    'A/B/F' : Item(status='A '),
-    })
+  if svntest.main.wc_is_singledb(wc_dir):
+    expected_output = svntest.wc.State(wc_dir, {
+        'A/B/F' : Item(verb='Restored'),
+        })
+  else:
+    expected_output = svntest.wc.State(wc_dir, {
+        'A/B/F' : Item(status='A '),
+        })
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.remove('A/mu')
   expected_disk.add({
     'A/D2'       : Item(),
     'A/D2/gamma'   : Item("This is the file 'gamma'.\n"),
-    'A/D2/G'       : Item(),
     'A/D2/H'       : Item(),
     'A/D2/H/chi'   : Item("This is the file 'chi'.\n"),
     'A/D2/H/omega' : Item("This is the file 'omega'.\n"),
     'A/D2/H/psi'   : Item("This is the file 'psi'.\n"),
     })
+  if not svntest.main.wc_is_singledb(wc_dir):
+    expected_disk.add({
+        'A/D2/G'       : Item(),
+        })
   expected_status.add({
     'A/B/F'       : Item(status='  ', wc_rev='2'),
     })
@@ -804,35 +816,92 @@ def bad_intermediate_urls(sbox):
   "bad intermediate urls in use"
   sbox.build()
   wc_dir = sbox.wc_dir
+  url = sbox.repo_url
+
+  A = os.path.join(wc_dir, 'A')
+  A_Z = os.path.join(wc_dir, 'A', 'Z')
+  url_A_C = url + '/A/C'
+  url_A_C_A = url + '/A/C/A'
+  url_A_C_A_Z = url + '/A/C/A/Z'
 
   # We'll be switching our working copy to (a modified) A/C in the Greek tree.
 
   # First, make an extra subdirectory in C to match one in the root, plus
   # another one inside of that.
-  C_url = sbox.repo_url + '/A/C'
-  C_A_url = sbox.repo_url + '/A/C/A'
-  C_A_Z_url = sbox.repo_url + '/A/C/A/Z'
   svntest.actions.run_and_verify_svn(None,
                                      ['\n', 'Committed revision 2.\n'], [],
                                      'mkdir', '-m', 'log msg',
-                                     C_A_url, C_A_Z_url)
+                                     url_A_C_A, url_A_C_A_Z)
 
   # Now, we'll drop a conflicting path under the root.
-  A_path = os.path.join(wc_dir, 'A')
-  A_Z_path = os.path.join(A_path, 'Z')
-  svntest.main.file_append(A_Z_path, 'Look, Mom, no ... switch success.')
+  svntest.main.file_append(A_Z, 'Look, Mom, a ... tree conflict.')
 
-  # This switch should fail for reasons of obstruction.
-  exit_code, out, err = svntest.main.run_svn(1, 'switch',
-                                             C_url, wc_dir)
-  if not err:
-    raise svntest.Failure
+  #svntest.factory.make(sbox, """
+  #  svn switch url/A/C wc_dir
+  #  # svn info A
+  #  # check that we can recover from the tree conflict
+  #  rm A/Z
+  #  svn up
+  #  """)
+  #exit(0)
+
+  # svn switch url/A/C wc_dir
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/mu'              : Item(status='D '),
+    'A/Z'               : Item(status='  ', treeconflict='C'),
+    'A/C'               : Item(status='D '),
+    'A/B'               : Item(status='D '),
+    'A/D'               : Item(status='D '),
+    'iota'              : Item(status='D '),
+  })
 
-  # However, the URL for A should now reflect A/C/A, not something else.
+  expected_disk = svntest.main.greek_state.copy()
+  expected_disk.remove('iota', 'A/B', 'A/B/E', 'A/B/E/beta', 'A/B/E/alpha',
+    'A/B/F', 'A/B/lambda', 'A/D', 'A/D/G', 'A/D/G/rho', 'A/D/G/pi',
+    'A/D/G/tau', 'A/D/H', 'A/D/H/psi', 'A/D/H/omega', 'A/D/H/chi',
+    'A/D/gamma', 'A/mu', 'A/C')
+  expected_disk.add({
+    'A/Z'               : Item(contents="Look, Mom, a ... tree conflict."),
+  })
+
+  expected_status = actions.get_virginal_state(wc_dir, 2)
+  expected_status.remove('iota', 'A/B', 'A/B/E', 'A/B/E/beta', 'A/B/E/alpha',
+    'A/B/F', 'A/B/lambda', 'A/D', 'A/D/G', 'A/D/G/rho', 'A/D/G/pi',
+    'A/D/G/tau', 'A/D/H', 'A/D/H/psi', 'A/D/H/omega', 'A/D/H/chi',
+    'A/D/gamma', 'A/mu', 'A/C')
+  expected_status.add({
+    'A/Z'               : Item(status='? ', treeconflict='C'),
+  })
+
+  actions.run_and_verify_switch(wc_dir, wc_dir, url_A_C, expected_output,
+    expected_disk, expected_status, None, None, None, None, None, False)
+
+  
+  # However, the URL for wc/A should now reflect ^/A/C/A, not something else.
   expected_infos = [
       { 'URL' : '.*/A/C/A$' },
     ]
-  svntest.actions.run_and_verify_info(expected_infos, A_path)
+  svntest.actions.run_and_verify_info(expected_infos, A)
+
+
+  # check that we can recover from the tree conflict
+  # rm A/Z
+  os.remove(A_Z)
+
+  # svn up
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/Z'               : Item(status='A '),
+  })
+
+  expected_disk.tweak('A/Z', contents=None)
+
+  expected_status.tweak(status='  ', wc_rev='2')
+  expected_status.tweak('A/Z', treeconflict=None)
+
+  actions.run_and_verify_update(wc_dir, expected_output, expected_disk,
+    expected_status, None, None, None, None, None, False, wc_dir)
+
+
 
 
 #----------------------------------------------------------------------
@@ -1274,47 +1343,48 @@ def forced_switch(sbox):
                                         '--force')
 
 #----------------------------------------------------------------------
-
+# This test currently XFails for serf as the different order of
+# operations is not handled here.
 def forced_switch_failures(sbox):
   "forced switch detects tree conflicts"
   #  svntest.factory.make(sbox,
   #    """
   #    # Add a directory to obstruct a file.
   #    mkdir A/B/F/pi
-  #
+  #  
   #    # Add a file to obstruct a directory.
   #    echo "The file 'H'" > A/C/H
-  #
+  #  
   #    # Test three cases where forced switch should cause a tree conflict
-  #
+  #  
   #    # 1) A forced switch that tries to add a file when an unversioned
   #    #    directory of the same name already exists.  (Currently fails)
   #    svn switch --force url/A/D A/C
-  #
+  #  
   #    # 2) A forced switch that tries to add a dir when a file of the same
   #    #    name already exists. (Tree conflict)
   #    svn switch --force url/A/D/G A/B/F
   #    svn info A/B/F/pi
-  #
+  #  
   #    # 3) A forced update that tries to add a directory when a versioned
   #    #    directory of the same name already exists.
-  #
+  #  
   #    # Make dir A/D/H/I in repos.
   #    svn mkdir -m "Log message" url/A/D/H/I
-  #
+  #  
   #    # Make A/D/G/I and co A/D/H/I into it.
   #    mkdir A/D/G/I
   #    svn co url/A/D/H/I A/D/G/I
-  #
+  #  
   #    # Try the forced switch.  A/D/G/I obstructs the dir A/D/G/I coming
   #    # from the repos, causing an error.
   #    svn switch --force url/A/D/H A/D/G
-  #
+  #  
   #    # Delete all three obstructions and finish the update.
   #    rm -rf A/D/G/I
   #    rm A/B/F/pi
   #    rm A/C/H
-  #
+  #  
   #    # A/B/F is switched to A/D/G
   #    # A/C is switched to A/D
   #    # A/D/G is switched to A/D/H
@@ -1348,19 +1418,13 @@ def forced_switch_failures(sbox):
   # 1) A forced switch that tries to add a file when an unversioned
   #    directory of the same name already exists.  (Currently fails)
   # svn switch --force url/A/D A/C
-  expected_error = ('Failed to add directory.*' + re.escape(A_C_H) +
-                    '.*a non-directory object.*already exists')
-
-  actions.run_and_verify_switch(wc_dir, A_C, url_A_D, None, None, None,
-    expected_error, None, None, None, None, False, '--force')
-
-  # 2) A forced switch that tries to add a dir when a file of the same
-  #    name already exists.
-  # svn switch --force url/A/D/G A/B/F
   expected_output = svntest.wc.State(wc_dir, {
-    'A/B/F/rho'         : Item(status='A '),
-    'A/B/F/pi'          : Item(status='  ', treeconflict='C'),
-    'A/B/F/tau'         : Item(status='A '),
+    'A/C/G'             : Item(status='A '),
+    'A/C/G/pi'          : Item(status='A '),
+    'A/C/G/rho'         : Item(status='A '),
+    'A/C/G/tau'         : Item(status='A '),
+    'A/C/gamma'         : Item(status='A '),
+    'A/C/H'             : Item(status='  ', treeconflict='C'),
   })
 
   expected_disk = svntest.main.greek_state.copy()
@@ -1372,23 +1436,44 @@ def forced_switch_failures(sbox):
     'A/C/G/tau'         : Item(contents="This is the file 'tau'.\n"),
     'A/C/H'             : Item(contents="The file 'H'\n"),
     'A/B/F/pi'          : Item(),
-    'A/B/F/rho'         : Item(contents="This is the file 'rho'.\n"),
-    'A/B/F/tau'         : Item(contents="This is the file 'tau'.\n"),
   })
 
   expected_status = actions.get_virginal_state(wc_dir, 1)
   expected_status.add({
-    'A/B/F/tau'         : Item(status='  ', wc_rev='1'),
-    'A/B/F/pi'          : Item(status='? ', treeconflict='C'),
-    'A/B/F/rho'         : Item(status='  ', wc_rev='1'),
     'A/C/G'             : Item(status='  ', wc_rev='1'),
     'A/C/G/rho'         : Item(status='  ', wc_rev='1'),
-    'A/C/G/pi'          : Item(status='  ', wc_rev='1'),
     'A/C/G/tau'         : Item(status='  ', wc_rev='1'),
+    'A/C/G/pi'          : Item(status='  ', wc_rev='1'),
+    'A/C/H'             : Item(status='? ', treeconflict='C'),
     'A/C/gamma'         : Item(status='  ', wc_rev='1'),
   })
+  expected_status.tweak('A/C', switched='S')
+
+  actions.run_and_verify_switch(wc_dir, A_C, url_A_D, expected_output,
+    expected_disk, expected_status, None, None, None, None, None, False,
+    '--force')
+
+
+  # 2) A forced switch that tries to add a dir when a file of the same
+  #    name already exists. (Tree conflict)
+  # svn switch --force url/A/D/G A/B/F
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/B/F/rho'         : Item(status='A '),
+    'A/B/F/pi'          : Item(status='  ', treeconflict='C'),
+    'A/B/F/tau'         : Item(status='A '),
+  })
+
+  expected_disk.add({
+    'A/B/F/rho'         : Item(contents="This is the file 'rho'.\n"),
+    'A/B/F/tau'         : Item(contents="This is the file 'tau'.\n"),
+  })
+
+  expected_status.add({
+    'A/B/F/tau'         : Item(status='  ', wc_rev='1'),
+    'A/B/F/pi'          : Item(status='? ', treeconflict='C'),
+    'A/B/F/rho'         : Item(status='  ', wc_rev='1'),
+  })
   expected_status.tweak('A/B/F', switched='S')
-  expected_status.tweak('A/C', status='! ', switched='S')
 
   actions.run_and_verify_switch(wc_dir, A_B_F, url_A_D_G, expected_output,
     expected_disk, expected_status, None, None, None, None, None, False,
@@ -1488,14 +1573,13 @@ def forced_switch_failures(sbox):
     'A/D/G/psi'         : Item(status='  ', wc_rev='2'),
     'A/D/G/chi'         : Item(status='  ', wc_rev='2'),
     'A/D/H/I'           : Item(status='  ', wc_rev='2'),
-    'A/C/H'             : Item(status='  ', wc_rev='2'),
     'A/C/H/psi'         : Item(status='  ', wc_rev='2'),
     'A/C/H/omega'       : Item(status='  ', wc_rev='2'),
     'A/C/H/chi'         : Item(status='  ', wc_rev='2'),
     'A/C/H/I'           : Item(status='  ', wc_rev='2'),
   })
   expected_status.tweak(wc_rev='2', status='  ')
-  expected_status.tweak('A/B/F/pi', treeconflict=None)
+  expected_status.tweak('A/B/F/pi', 'A/C/H', treeconflict=None)
   expected_status.tweak('A/D/G', switched='S')
 
   actions.run_and_verify_update(wc_dir, expected_output, expected_disk,
@@ -1539,10 +1623,7 @@ def switch_with_obstructing_local_adds(s
   # Setup expected results of switch.
   expected_output = svntest.wc.State(sbox.wc_dir, {
     "A/B/F/gamma"   : Item(status='  ', treeconflict='C'),
-    "A/B/F/G"       : Item(status='E '),
-    "A/B/F/G/pi"    : Item(status='  ', treeconflict='C'),
-    "A/B/F/G/rho"   : Item(status='A '),
-    "A/B/F/G/tau"   : Item(status='  ', treeconflict='C'),
+    "A/B/F/G"       : Item(status='  ', treeconflict='C'),
     "A/B/F/H"       : Item(status='A '),
     "A/B/F/H/chi"   : Item(status='A '),
     "A/B/F/H/omega" : Item(status='A '),
@@ -1554,7 +1635,6 @@ def switch_with_obstructing_local_adds(s
     "A/B/F/gamma"     : Item("This is the file 'gamma'.\n"),
     "A/B/F/G"         : Item(),
     "A/B/F/G/pi"      : Item("This is the OBSTRUCTING file 'pi'.\n"),
-    "A/B/F/G/rho"     : Item("This is the file 'rho'.\n"),
     "A/B/F/G/tau"     : Item("This is the file 'tau'.\n"),
     "A/B/F/G/upsilon" : Item("This is the unversioned file 'upsilon'.\n"),
     "A/B/F/H"         : Item(),
@@ -1566,19 +1646,17 @@ def switch_with_obstructing_local_adds(s
   expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
   expected_status.tweak('A/B/F', switched='S')
   expected_status.add({
-    "A/B/F/gamma"     : Item(status='R ', treeconflict='C', wc_rev='1'),
-
-    "A/B/F/G"         : Item(status='  ', wc_rev=1),
-    "A/B/F/G/pi"      : Item(status='R ', treeconflict='C', wc_rev='1'),
-    "A/B/F/G/rho"     : Item(status='  ', wc_rev=1),
-    "A/B/F/G/tau"     : Item(status='R ', treeconflict='C', wc_rev='1'),
-    "A/B/F/G/upsilon" : Item(status='A ', wc_rev=0),
-    "A/B/F/H"         : Item(status='  ', wc_rev=1),
-    "A/B/F/H/chi"     : Item(status='  ', wc_rev=1),
-    "A/B/F/H/omega"   : Item(status='  ', wc_rev=1),
-    "A/B/F/H/psi"     : Item(status='  ', wc_rev=1),
-    "A/B/F/I"         : Item(status='A ', wc_rev=0),
-    })
+    'A/B/F/gamma'     : Item(status='R ', treeconflict='C', wc_rev='1'),
+    'A/B/F/G'         : Item(status='A ', treeconflict='C', wc_rev='0'),
+    'A/B/F/G/pi'      : Item(status='A ', wc_rev='0'),
+    'A/B/F/G/tau'     : Item(status='A ', wc_rev='0'),
+    'A/B/F/G/upsilon' : Item(status='A ', wc_rev='0'),
+    'A/B/F/H'         : Item(status='  ', wc_rev='1'),
+    'A/B/F/H/chi'     : Item(status='  ', wc_rev='1'),
+    'A/B/F/H/omega'   : Item(status='  ', wc_rev='1'),
+    'A/B/F/H/psi'     : Item(status='  ', wc_rev='1'),
+    'A/B/F/I'         : Item(status='A ', wc_rev='0'),
+  })
 
   # "Extra" files that we expect to result from the conflicts.
   extra_files = ['pi\.r0', 'pi\.r1', 'pi\.mine']
@@ -2398,6 +2476,8 @@ j = os.path.join
 def tree_conflicts_on_switch_1_1(sbox):
   "tree conflicts 1.1: tree del, leaf edit on switch"
 
+  sbox.build()
+
   # use case 1, as in notes/tree-conflicts/use-cases.txt
   # 1.1) local tree delete, incoming leaf edit
 
@@ -2415,6 +2495,10 @@ def tree_conflicts_on_switch_1_1(sbox):
   })
 
   expected_disk = disk_empty_dirs.copy()
+  if  svntest.main.wc_is_singledb(sbox.wc_dir):
+    expected_disk.remove('D/D1', 'DF/D1', 'DD/D1', 'DD/D1/D2',
+                         'DDF/D1', 'DDF/D1/D2',
+                         'DDD/D1', 'DDD/D1/D2', 'DDD/D1/D2/D3')
 
   # The files delta, epsilon, and zeta are incoming additions, but since
   # they are all within locally deleted trees they should also be schedule
@@ -2482,6 +2566,8 @@ def tree_conflicts_on_switch_1_1(sbox):
 def tree_conflicts_on_switch_1_2(sbox):
   "tree conflicts 1.2: tree del, leaf del on switch"
 
+  sbox.build()
+
   # 1.2) local tree delete, incoming leaf delete
 
   expected_output = deep_trees_conflict_output.copy()
@@ -2521,6 +2607,10 @@ def tree_conflicts_on_switch_1_2(sbox):
   expected_disk.remove('D/D1',
                        'DD/D1/D2',
                        'DDD/D1/D2/D3')
+  if svntest.main.wc_is_singledb(sbox.wc_dir):
+    expected_disk.remove('DF/D1', 'DD/D1',
+                         'DDF/D1', 'DDF/D1/D2',
+                         'DDD/D1', 'DDD/D1/D2')
 
   expected_info = {
     'F/alpha' : {
@@ -3004,6 +3094,33 @@ def copy_with_switched_subdir(sbox):
   # should either be the tree of E, or nothing at all.
   svntest.actions.run_and_verify_status(wc_dir, state)
 
+### regression test for issue #3597
+def relocate_with_relative_externals(sbox):
+  "relocate a directory containing relative externals"
+  
+  sbox.build()
+  wc_dir = sbox.wc_dir
+
+  # Add a relative external.
+  change_external(os.path.join(wc_dir, 'A', 'B'), "^/A/D/G G-ext", commit=True)
+  svntest.actions.run_and_verify_svn(None, None, [], 'update', wc_dir)
+  
+  # Move our repository to another location.
+  repo_dir = sbox.repo_dir
+  repo_url = sbox.repo_url
+  other_repo_dir, other_repo_url = sbox.add_repo_path('other')
+  svntest.main.copy_repos(repo_dir, other_repo_dir, 2, 0)
+  svntest.main.safe_rmtree(repo_dir, 1)
+
+  # Now relocate our working copy.
+  svntest.actions.run_and_verify_svn(None, None, [], 'switch', '--relocate',
+                                     repo_url, other_repo_url, wc_dir)
+
+  # Check the URL of the external -- was it updated to point to the
+  # .other repository URL?
+  svntest.actions.run_and_verify_info([{ 'URL' : '.*.other/A/D/G$' }],
+                                      os.path.join(wc_dir, 'A', 'B', 'G-ext'))
+
 
 ########################################################################
 # Run the tests
@@ -3030,7 +3147,8 @@ test_list = [ None,
               switch_change_repos_root,
               relocate_and_propset,
               forced_switch,
-              forced_switch_failures,
+              XFail(forced_switch_failures,
+                    svntest.main.is_ra_type_dav_serf),
               switch_scheduled_add,
               SkipUnless(mergeinfo_switch_elision, server_has_mergeinfo),
               switch_with_obstructing_local_adds,
@@ -3048,7 +3166,8 @@ test_list = [ None,
               single_file_relocate,
               relocate_with_switched_children,
               XFail(copy_with_switched_subdir),
-             ]
+              XFail(relocate_with_relative_externals),
+              ]
 
 if __name__ == '__main__':
   svntest.main.run_tests(test_list)

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/trans_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/trans_tests.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/trans_tests.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/trans_tests.py Wed Aug 11 16:43:22 2010
@@ -868,9 +868,10 @@ def props_only_file_update(sbox):
 
   # We used to leave some temporary files around. Make sure that we don't.
   temps = os.listdir(os.path.join(wc_dir, svntest.main.get_admin_name(), 'tmp'))
-  temps.remove('prop-base')
-  temps.remove('props')
-  temps.remove('text-base')
+  if os.path.exists(os.path.join(wc_dir, svntest.main.get_admin_name(),
+                                 'tmp', 'props')):
+    temps.remove('prop-base')
+    temps.remove('props')
   if temps:
     print('Temporary files leftover: %s' % (', '.join(temps),))
     raise svntest.Failure

Modified: subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/tree_conflict_tests.py?rev=984468&r1=984467&r2=984468&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/tree_conflict_tests.py (original)
+++ subversion/branches/ignore-mergeinfo/subversion/tests/cmdline/tree_conflict_tests.py Wed Aug 11 16:43:22 2010
@@ -51,7 +51,7 @@ def verbose_print(line):
 
 # If verbose mode is enabled, print the (assumed newline-terminated) LINES.
 def verbose_printlines(lines):
-  if main.verbose_mode:
+  if main.options.verbose:
     for line in lines:
       sys.stdout.write(line)