On Thu, Apr 29, 2010 at 10:08 AM, Vadym Chepkov <vchep...@gmail.com> wrote:
> Hi, > > I know, this is maybe not the best practice, but, unfortunately, our > subversion users do this all the time: they merge form one branch to another > back and forward. > The question is, how to properly do it without introducing conflicts. > Here is the test case, which one would think should be handled properly, > but for some reason it's not: > > [~]$ svnadmin create mergerepo > [~]$ svn co file://`pwd`/mergerepo mergework > Checked out revision 0. > > [mergework]$ svn mkdir --parents branches/b1 > A /home/vvc/mergework/branches > A /home/vvc/mergework/branches/b1 > > [mergework]$ svn commit -m "Created branch b1" > Adding branches > Adding branches/b1 > > Committed revision 1. > > [mergework]$ svn copy branches/b1 branches/b2 > A branches/b2 > [mergework]$ svn commit -m "Created branch b2" > Adding branches/b2 > > Committed revision 2. > > > [b2]$ touch README > [b2]$ svn add README > A README > [b2]$ svn commit -m "Added README" > Adding b2/README > Transmitting file data . > Committed revision 3. > > > [b1]$ svn merge -c 3 ^/branches/b2 > --- Merging r3 into '.': > A README > [b1]$ svn commit -m "Merged r3 into b1" > Sending b1 > Adding b1/README > > Committed revision 4. > [b2]$ svn merge --dry-run ^/branches/b1 > --- Merging r2 through r4 into '.': > C README > Summary of conflicts: > Tree conflicts: 1 > After r3, you'll need to do a '--record-only' merge of r4 into the second branch: (untested) svn merge --record-only -c 4 ^/branches/b1 SVN doesn't seem to trace back through the commits to see that r3 was really a merge from b2->b1. Like yourself, I initially though that it would be able to deal with this, but it doesn't seem to (and there is probably a very good reason why it can't). Cheers, Daniel B.