On Thu, May 16, 2013 at 1:58 PM, Philip Martin <philip.mar...@wandisco.com> wrote: > Paul Burba <ptbu...@gmail.com> writes: > >> Bob's script is a different beast, there is a real problem there. I >> will rewrite the test to demonstrate his scenario. > > It doesn't matter whether we use 1.7 or 1.8 for this: > > rm -rf repo wc > svnadmin create repo --compatible-version 1.7 > svn -mm mkdir --parents file://`pwd`/repo/T/P > svn -mm cp file://`pwd`/repo/T ^/B > svn -mm mkdir --parents file://`pwd`/repo/T/P/Q/R > svn -mm mkdir file://`pwd`/repo/T/X > svn -mm rm file://`pwd`/repo/T/P/Q/R > svn co --depth empty file://`pwd`/repo/B wc > svn merge ^/T wc > svn ci -mm wc > > Both 1.7 and 1.8 give this history: > > svn log file://`pwd`/repo -vq > ------------------------------------------------------------------------ > r6 | pm | 2013-05-16 18:38:44 +0100 (Thu, 16 May 2013) > Changed paths: > M /B > A /B/X (from /T/X:5) > ------------------------------------------------------------------------ > r5 | pm | 2013-05-16 18:38:43 +0100 (Thu, 16 May 2013) > Changed paths: > D /T/P/Q/R > ------------------------------------------------------------------------ > r4 | pm | 2013-05-16 18:38:43 +0100 (Thu, 16 May 2013) > Changed paths: > A /T/X > ------------------------------------------------------------------------ > r3 | pm | 2013-05-16 18:38:43 +0100 (Thu, 16 May 2013) > Changed paths: > A /T/P/Q > A /T/P/Q/R > ------------------------------------------------------------------------ > r2 | pm | 2013-05-16 18:38:43 +0100 (Thu, 16 May 2013) > Changed paths: > A /B (from /T:1) > ------------------------------------------------------------------------ > r1 | pm | 2013-05-16 18:38:43 +0100 (Thu, 16 May 2013) > Changed paths: > A /T > A /T/P > ------------------------------------------------------------------------ > svn pg svn:mergeinfo file://`pwd`/repo/B > /T:2-5* > > This merge fails with 1.8: > > svn co file://`pwd`/repo/B wc > svn merge ^/T wc > svn ci -mm wc > svn: E160028: '/B/P/Q/R' is out of date > > But the same merge works with 1.7 giving this commit: > > r7 | pm | 2013-05-16 18:54:02 +0100 (Thu, 16 May 2013) > Changed paths: > M /B > A /B/P/Q (from /T/P/Q:3) > D /B/P/Q/R > > The reason 1.8 fails is that it is not copying T/P/Q from the old r3 but > from head. With 1.7 the wc.db before the commit looks like: > > sqlite3 wc/.svn/wc.db "select op_depth, local_relpath, presence, repos_path, > revision from nodes order by op_depth, local_relpath" > 0||normal|B|6 > 0|P|normal|B/P|6 > 0|X|normal|B/X|6 > 2|P/Q|normal|T/P/Q|3 > 2|P/Q/R|normal|T/P/Q/R|3 > 3|P/Q/R|base-deleted|| > > but with 1.8 it looks like: > > sqlite3 wc/.svn/wc.db "select op_depth, local_relpath, presence, repos_path, > revision from nodes order by op_depth, local_relpath" > 0||normal|B|6 > 0|P|normal|B/P|6 > 0|X|normal|B/X|6 > 2|P/Q|normal|T/P/Q|6 > 2|P/Q/R|normal|T/P/Q/R|6 > 3|P/Q/R|base-deleted|| > > The merge has created a bogus copy, it has the path structure associated > with r3 but is marked r6.
Fixed this in http://svn.apache.org/viewvc?view=revision&revision=1483947 I'm confident this fix is correct, but would appreciate any review, since this is a convoluted use case. -- Paul T. Burba CollabNet, Inc. -- www.collab.net -- Enterprise Cloud Development Skype: ptburba