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

Re: Mergeinfo overwritten from successive merges

From: Jeb Wilson <jwilson_at_colspace.com>
Date: Fri, 14 Mar 2014 01:18:12 +0000

Hello,

I've reproduced this mergeinfo overwriting issue using the following steps. We are seeing this with svn client v1.8.8, and using a remote VisualSVN server v2.7.0 (which uses svn v1.8.8). NOTE: This cannot be replicated by using a locally created repo...we've only been able to replicate with VisualSVN remotely.

TO REPRODUCE:
We started out by creating an empty repo called TestRepo on the server. Then:

E:\Colspace\sandbox2>mkdir fullrepo

E:\Colspace\sandbox2>svn checkout https://svn.colspace.com/svn/TestRepo fullrepo

Checked out revision 0.

E:\Colspace\sandbox2>cd fullrepo

E:\Colspace\sandbox2\fullrepo>svn mkdir trunk
A trunk

E:\Colspace\sandbox2\fullrepo>svn mkdir branch
A branch

E:\Colspace\sandbox2\fullrepo>svn commit -mm .
Adding branch
Adding trunk

Committed revision 1.

E:\Colspace\sandbox2\fullrepo>cd ..

E:\Colspace\sandbox2>mkdir trunk

E:\Colspace\sandbox2>mkdir user1_branch

E:\Colspace\sandbox2>mkdir user2_branch

E:\Colspace\sandbox2>svn checkout https://svn.colspace.com/svn/TestRepo/trunk trunk
Checked out revision 1.

E:\Colspace\sandbox2>svn checkout https://svn.colspace.com/svn/TestRepo/branch user1_branch
Checked out revision 1.

E:\Colspace\sandbox2>svn checkout https://svn.colspace.com/svn/TestRepo/branch user2_branch
Checked out revision 1.

E:\Colspace\sandbox2>echo "file1" > trunk/file1.txt

E:\Colspace\sandbox2>svn add trunk/file1.txt
A trunk\file1.txt

E:\Colspace\sandbox2>svn commit -mm trunk
Adding trunk\file1.txt
Transmitting file data .
Committed revision 2.

E:\Colspace\sandbox2>echo "file2" > trunk/file2.txt

E:\Colspace\sandbox2>svn add trunk/file2.txt
A trunk\file2.txt

E:\Colspace\sandbox2>svn commit -mm trunk
Adding trunk\file2.txt
Transmitting file data .
Committed revision 3.

E:\Colspace\sandbox2>svn merge -c2 https://svn.colspace.com/svn/TestRepo/trunk user1_branch
--- Merging r2 into 'user1_branch':
A user1_branch\file1.txt
--- Recording mergeinfo for merge of r2 into 'user1_branch':
U user1_branch

E:\Colspace\sandbox2>svn commit -mm user1_branch
Sending user1_branch
Adding user1_branch\file1.txt

Committed revision 4.

E:\Colspace\sandbox2>svn merge -c3 https://svn.colspace.com/svn/TestRepo/trunk user2_branch
--- Merging r3 into 'user2_branch':
A user2_branch\file2.txt
--- Recording mergeinfo for merge of r3 into 'user2_branch':
U user2_branch

E:\Colspace\sandbox2>svn commit -mm user2_branch
Sending user2_branch
Adding user2_branch\file2.txt

Committed revision 5.

E:\Colspace\sandbox2>svn update user1_branch
Updating 'user1_branch':
A user1_branch\file2.txt
U user1_branch
Updated to revision 5.

E:\Colspace\sandbox2>svn propget svn:mergeinfo user1_branch
/trunk:3

WHOOPS, WHAT HAPPENED TO THE MERGED REV 2?? I MERGED IT, BUT THE MERGEINFO GOT OVERWRITTEN.

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_at_zulu:/tmp/test$ ~/repro.sh
+ svnadmin create repo
+ svn checkout file:///tmp/test/repo<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\trunk> file:///tmp/test/repo/branch<file:///\\tmp\test\repo\branch>

Committed revision 2.
+ svn checkout file:///tmp/test/repo/trunk<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<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<file:///\\tmp\test\repo\branch> user1
U user1/a
Updated to revision 4.
+ svn switch file:///tmp/test/repo/branch<file:///\\tmp\test\repo\branch> user2
U user2/b
U user2/a
Updated to revision 4.
+ svn merge -c3 file:///tmp/test/repo/trunk<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<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_at_wandisco.com<mailto:brane_at_wandisco.com>
Received on 2014-03-14 02:19:01 CET

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.