[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Sparse working copy in 1.8.0 causes problems for others' merges; 1.7.x didn't complain

From: Philip Martin <philip.martin_at_wandisco.com>
Date: Thu, 16 May 2013 18:58:32 +0100

Paul Burba <ptburba_at_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.

-- 
Certified & Supported Apache Subversion Downloads:
http://www.wandisco.com/subversion/download
Received on 2013-05-16 19:59:06 CEST

This is an archived mail posted to the Subversion Dev mailing list.