You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Jeb Wilson <jw...@colspace.com> on 2014/03/12 21:24:58 UTC

Mergeinfo overwritten from successive merges

Hello all,

Apologies if this has already been reported, but it's a difficult one to search for. This came through from TortoiseSVN 1.8.5.

Here's the basic way to reproduce:

User #1 merges from A -> B and commits.
User #2 merges SOMETHING ELSE from A->B but doesn't update first to get User #1's changes.
User #2 commits, and SVN allows the commit. After reviewing the resulting mergeinfo, User #1's mergeinfo is overwritten, and the merge info from User #1 is lost.

I've reproduced this several times with TortoiseSVN 1.8.5. Note, we're using 2.5.16 version of VisualSVN server.

My opinion is SVN should reject User #2's commit, and inform them they have an out-of-date working copy and it should force them to update before committing their merge changes.
When I downgrade to 1.8.3, the proper "out of date" warning comes up and forces an update. Thus, it must have been something that was introduced as of 1.8.4.
FYI, another user has reported this issue here: http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3071239

Thanks,
Jeb


Re: Mergeinfo overwritten from successive merges

Posted by Branko Čibej <br...@wandisco.com>.
On 12.03.2014 21:24, Jeb Wilson wrote:
> Hello all,
>
> Apologies if this has already been reported, but it's a difficult one to search for. This came through from TortoiseSVN 1.8.5.
>
> Here's the basic way to reproduce:
>
> User #1 merges from A -> B and commits.
> User #2 merges SOMETHING ELSE from A->B but doesn't update first to get User #1's changes.
> User #2 commits, and SVN allows the commit. After reviewing the resulting mergeinfo, User #1's mergeinfo is overwritten, and the merge info from User #1 is lost.
>
> I've reproduced this several times with TortoiseSVN 1.8.5. Note, we're using 2.5.16 version of VisualSVN server.
>
> My opinion is SVN should reject User #2's commit, and inform them they have an out-of-date working copy and it should force them to update before committing their merge changes.
> When I downgrade to 1.8.3, the proper "out of date" warning comes up and forces an update. Thus, it must have been something that was introduced as of 1.8.4.
> FYI, another user has reported this issue here: http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=4061&dsMessageId=3071239

I can't reproduce this with either 1.8.5 or 1.8.8, with the attached
script; both give the same output (see below). If this is indeed a bug,
and not pilot error, it would appear to be specific to TortoiseSVN, not
Subversion.

-- Brane

brane@zulu:/tmp/test$ ~/repro.sh 
+ svnadmin create repo
+ svn checkout file:///tmp/test/repo structure
Checked out revision 0.
+ svn mkdir structure/trunk
A         structure/trunk
+ echo a
+ echo b
+ svn add structure/trunk/a structure/trunk/b
A         structure/trunk/a
A         structure/trunk/b
+ svn commit -mm structure
Adding         structure/trunk
Adding         structure/trunk/a
Adding         structure/trunk/b
Transmitting file data ..
Committed revision 1.
+ rm -fr structure
+ svn copy -mm file:///tmp/test/repo/trunk file:///tmp/test/repo/branch

Committed revision 2.
+ svn checkout file:///tmp/test/repo/trunk user1
A    user1/a
A    user1/b
Checked out revision 2.
+ echo aa
+ svn commit -mm user1
Sending        user1/a
Transmitting file data .
Committed revision 3.
+ svn checkout file:///tmp/test/repo/trunk user2
A    user2/a
A    user2/b
Checked out revision 3.
+ echo bb
+ svn commit -mm user2
Sending        user2/b
Transmitting file data .
Committed revision 4.
+ svn switch file:///tmp/test/repo/branch user1
U    user1/a
Updated to revision 4.
+ svn switch file:///tmp/test/repo/branch user2
U    user2/b
U    user2/a
Updated to revision 4.
+ svn merge -c3 file:///tmp/test/repo/trunk user1
--- Merging r3 into 'user1':
U    user1/a
--- Recording mergeinfo for merge of r3 into 'user1':
 U   user1
+ svn commit -mm user1
Sending        user1
Sending        user1/a
Transmitting file data .
Committed revision 5.
+ svn merge -c4 file:///tmp/test/repo/trunk user2
--- Merging r4 into 'user2':
U    user2/b
--- Recording mergeinfo for merge of r4 into 'user2':
 U   user2
+ svn commit -mm user2
Sending        user2
svn: E155011: Commit failed (details follow):
svn: E155011: Directory '/private/tmp/test/user2' is out of date
svn: E160028: Directory '/branch' is out of date


-- 
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com