[Svnmerge] Merge Issues

Blair Zajac blair at orcaware.com
Sun May 8 23:36:26 PDT 2011


On May 8, 2011, at 11:08 PM, Prakash P M S wrote:

> > From: blair at orcaware.com
> > To: prakashpms at hotmail.com
> > Date: Fri, 6 May 2011 15:41:26 -0700
> > CC: svnmerge at orcaware.com
> > Subject: Re: [Svnmerge] Merge Issues
> >
> > On May 6, 2011, at 8:05 AM, Prakash P M S wrote:
> >
> > > While merging by cherry picking the revisions using svnmerge.py,
> > > svnmerge.py creates issue if there are merge conflicts.
> > >
> > > If two versions 5118 and 5145 are merged, if there is a conflict  
> due
> > > to revision 5118, it attempts to merge 5145, but the changes of  
> 5145
> > > are not merged. When the conflicts are resolved manually, only the
> > > changes of 5118 are present in the merged file. First it doesn't
> > > even alert that 5145 changes are not merged, but shows that merge
> > > being done for that revision. Even if we want to merge it manually
> > > after resolving first conflict, it doesn't allow to merge as it is
> > > not a clean workspace.
> > >
> > > Is there a better way to handle this with svnmerge.py?
> > >
> > > --- Merging r5118 into '.':
> > > C src/foo.c
> > > Summary of conflicts:
> > > Text conflicts: 1
> > >
> > > --- Merging r5145 into '.':
> > > G src/foo.c
> > >
> > > property 'svnmerge-integrated' set on '.'
> >
> > The merge of r5145 is showing as being applied, so it's odd that  
> it's
> > not appearing in the file.
> >
> > Are r5118 and r5145 in the same part of the file, +/- 3 lines?
> >
> > BTW, if there's a merge conflict, I like to merge r5118, resolve it,
> > commit it, then merge r5145. This will have the first merge commit
> > show what was done more clearly.
> >
> > Regards,
> > Blair
>
> The change of 5145 is in different part of the file. The merge of  
> 5118 resulted in conflict because 5120 is merged before 5118 and  
> both the revisions were changing at the same part/lines of the file.
>
> I cannot commit the first revision alone. svnmerge is used inside a  
> tool that merges the changes selectively from dev to release branch.  
> All changes that go into the build cycle/release has to be merged  
> first, built and tested and then committed. Since svnmerge allows to  
> specify specific versions, I would expect it to merge the changes  
> consolidated and raise conflict only for revisions that has  
> conflict. But the behaviour is that it attempts to merge other  
> revisions, but the changes are not merged. Atleast if there is a way  
> to force merge 5145 after resolving 5118, inspite of unclean  
> workspace, it will work for me.

If I understand you correctly, you're saying that r5145 is not being  
merged?  It should be and the output of svnmerge.py is showing that  
the merge is being done, with this output:

> > > --- Merging r5145 into '.':
> > > G src/foo.c

It would be interesting to run the following two commands in two  
separate, clean checkouts and then do a 'diff -ru -x .svn 1 2' between  
them

svn co http://.../  1/
svn co http://.../  2/
cd 1; svnmerge.py -r 5118; cd ..
cd 2; svnmerge.py -r 5118,5145; cd ..

By what you're saying, what's in 2 should be the same as 1.

So I would double check to see what it's doing.  You can pass -v -v to  
svnmerge.py.

Besides this, if it doesn't work, you could do

svnmerge.py -r 5118
svnmerge.py -r 5145 -F

Blair



More information about the Svnmerge mailing list