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

SVN 1.8 merge (branch reuse) seems broken when having local mergeinfo

From: Tim van Halteren <t.van.halteren_at_inforay.nl>
Date: Thu, 06 Mar 2014 18:15:03 +0100

We have a problem with the new 1.8 subversion clients (we use
TortoiseSVN 1.8.5 and SlikSVN 1.8.5). It seems that the new SVN 1.8
feature of being able to keep using your feature branch after
reintegration is not working in some cases.

It is not working when the trunk contains local mergeinfo (Mergeinfo on
files or sub-trees). This may cause a problem for branch reuse after the
reintegrate. This wasn't a problem with 1.7 clients if branch reuse was
done using the 'keep alive dance' (using the record only option).

I have made a script that illustrates this problem from scratch. It can
be run against an empty repository using a 1.8 client.

The script below has 10 steps. Step 1-5 are used to create the starting
situation of having local mergeinfo in the trunk. Steps 6-9 simulate
changes being made to the trunk during the life of a feature branch2.
Step 10 is the failing step which simulates the first step of reuse of
the feature branch after reintegrate.

This is the error in step 10:

svn: E195016: Reintegrate can only be used if revisions 346 through 349
were previously merged from
svn://svn2010/practice/branches/featurebranch2 to the reintegrate
source, but this is not the case:
   trunk/file1.txt
     Missing ranges: /trunk/file1.txt:347
This is the script. You need to change the subversion URL's to point to
your repository.

I do not understand why this happens. Also the error reports missing
ranges of file1.txt while it seems to be file2.txt that is missing
mergeinfo. While not a solution, deleting the local mergeinfo on
file2.txt in the trunk also seems to fix the problem. This also hints
that the error message is reporting something on the wrong file.

@ECHO OFF
ECHO ------------------------------------------------------------------
ECHO STEP 1: Create a trunk with 2 files
ECHO ------------------------------------------------------------------
svn mkdir -m "Create trunk" svn://svn2010/practice/trunk
svn checkout svn://svn2010/practice/trunk
echo Original file contents created in the trunk. > trunk\file1.txt
echo Original file contents created in the trunk. > trunk\file2.txt
svn add trunk\file1.txt
svn add trunk\file2.txt
svn -m "Added 2 files" commit trunk

ECHO ------------------------------------------------------------------
ECHO STEP 2: Create a copy (feature branch) from the trunk
ECHO ------------------------------------------------------------------
svn mkdir -m "Create branches dir" svn://svn2010/practice/branches
svn copy -m "Create featurebranch1" svn://svn2010/practice/trunk
svn://svn2010/practice/branches/featurebranch1

ECHO ------------------------------------------------------------------
ECHO STEP 3: Modify both files in the feature branch
ECHO ------------------------------------------------------------------
svn checkout svn://svn2010/practice/branches/featurebranch1
echo Additional file contents created in featurebranch1. >>
featurebranch1\file1.txt
echo Additional file contents created in featurebranch1. >>
featurebranch1\file2.txt
svn -m "Modified 2 files in featurebranch1" commit featurebranch1

ECHO ------------------------------------------------------------------
ECHO STEP 4: Merge both files from featurebranch1 to the trunk to
ECHO create local mergeinfo on both files
ECHO ------------------------------------------------------------------
svn update trunk
svn merge svn://svn2010/practice/branches/featurebranch1/file1.txt
trunk/file1.txt
svn merge svn://svn2010/practice/branches/featurebranch1/file2.txt
trunk/file2.txt
svn -m "Merged 2 files from featurebranch1 to trunk" commit trunk

ECHO ------------------------------------------------------------------
ECHO STEP 5: Delete featurebranch2, we only needed it for the
ECHO initial setup
ECHO ------------------------------------------------------------------
svn delete -m "Delete featurebranch1"
svn://svn2010/practice/branches/featurebranch1

ECHO ------------------------------------------------------------------
ECHO STEP 6: This is the start of the problematic scenario
ECHO Create a new featurebranch2 from the trunk and a wc for it
ECHO ------------------------------------------------------------------
svn copy -m "Create featurebranch2" svn://svn2010/practice/trunk
svn://svn2010/practice/branches/featurebranch2
svn checkout svn://svn2010/practice/branches/featurebranch2

ECHO ------------------------------------------------------------------
ECHO STEP 7: Modify the contents of file1.txt in the trunk and leave
ECHO the contents of file2.txt unchanged (this is important)
ECHO ------------------------------------------------------------------
echo Additional file contents created in the trunk. >> trunk\file1.txt
svn -m "Modified file1.txt in the trunk" commit trunk

ECHO ------------------------------------------------------------------
ECHO STEP 8: Sync merge the trunk to featurebranch2
ECHO ------------------------------------------------------------------
svn update featurebranch2
svn merge svn://svn2010/practice/trunk featurebranch2
svn -m "Sync merged the trunk into featurebranch2" commit featurebranch2

ECHO ------------------------------------------------------------------
ECHO STEP 9: Reintegrate featurebranch2 back into the trunk
ECHO ------------------------------------------------------------------
svn update trunk
svn merge svn://svn2010/practice/branches/featurebranch2 trunk
svn -m "Reintegrated featurebranch2 back into the trunk" commit trunk

ECHO ------------------------------------------------------------------
ECHO STEP 10: Try to reuse featurebranch2 after it was reintegrated
ECHO Sync merge it from the trunk. THIS FAILS with SVN 1.8
ECHO ------------------------------------------------------------------
svn update featurebranch2
svn merge svn://svn2010/practice/trunk featurebranch2
Received on 2014-03-06 18:24:30 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.