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

Two way merging

From: William S Fulton <wsf_at_fultondesigns.co.uk>
Date: Sun, 20 Dec 2009 18:02:22 +0000

Hi,

We have been doing regular two way merges from trunk to branch and
vice-versa using svn 1.5. In 1.6 this results in tree conflicts. Is
there any guidance on how to deal with this scenario? All I can find is
the svn book, which only talks about tree conflicts wrt to working
copies. I have a script attached demonstrating the general problem. It
simply adds/deletes files on trunk, merges to mybranch, then merges back
to trunk. In my possibly naive view, there really isn't a tree conflict
at all as there have been no changes on the branch (other than what was
merged from trunk!!). Perhaps we are not merging correctly? Although
using --reintegrate when merging back to trunk removes the tree conflict
problem, this can't be right option as we want to keep the branch going
in order to make further releases.

The "Common Branching Patterns" section
http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.branchmerge.commonpatterns
does not mention two way merging. We have always worked by having a
stable release branch containing bug fixes, which get merged to trunk.
However, bug fixes can also be cherry picked from trunk and merged to
the release branch. It would be much appreciated if there was some
advice on how to use svn with this branching pattern.

Thanks
William

+ svnadmin=svnadmin
+ svn=svn
+ test_root=/home/fultonwi
+ repo=/home/fultonwi/svnrepos/two_way_merge
+ working_copy=/home/fultonwi/svn/two_way_merge
+ svn --version
svn, version 1.6.6 (r40053)
   compiled Nov 17 2009, 15:58:43

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - handles 'http' scheme
  - handles 'https' scheme

+ svnadmin --version
svnadmin, version 1.6.6 (r40053)
   compiled Nov 17 2009, 15:58:43

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

+ mkdir -p /home/fultonwi/svnrepos/two_way_merge
+ rm -rf /home/fultonwi/svnrepos/two_way_merge
+ svnadmin create /home/fultonwi/svnrepos/two_way_merge
+ svn mkdir -m 'create trunk' file:///home/fultonwi/svnrepos/two_way_merge/trunk

Committed revision 1.
+ svn mkdir -m 'create branches' file:///home/fultonwi/svnrepos/two_way_merge/branches

Committed revision 2.
+ rm -rf /home/fultonwi/svn/two_way_merge
+ mkdir -p /home/fultonwi/svn/two_way_merge
+ svn checkout file:///home/fultonwi/svnrepos/two_way_merge/trunk /home/fultonwi/svn/two_way_merge/trunk
Checked out revision 2.
+ echo 'contents of file1.txt'
+ echo 'contents of file2.txt'
+ svn add /home/fultonwi/svn/two_way_merge/trunk/file1.txt
A /home/fultonwi/svn/two_way_merge/trunk/file1.txt
+ svn add /home/fultonwi/svn/two_way_merge/trunk/file2.txt
A /home/fultonwi/svn/two_way_merge/trunk/file2.txt
+ svn commit -m 'Add file1.txt and file2.txt' /home/fultonwi/svn/two_way_merge/trunk
Adding svn/two_way_merge/trunk/file1.txt
Adding svn/two_way_merge/trunk/file2.txt
Transmitting file data ..
Committed revision 3.
+ svn copy -m 'create mybranch' file:///home/fultonwi/svnrepos/two_way_merge/trunk file:///home/fultonwi/svnrepos/two_way_merge/branches/mybranch

Committed revision 4.
+ svn rm /home/fultonwi/svn/two_way_merge/trunk/file2.txt
D /home/fultonwi/svn/two_way_merge/trunk/file2.txt
+ svn commit -m 'remove file2.txt from trunk' /home/fultonwi/svn/two_way_merge/trunk/file2.txt
Deleting svn/two_way_merge/trunk/file2.txt

Committed revision 5.
+ echo 'another line in file1.txt'
+ svn commit -m 'add another line to file1.txt' /home/fultonwi/svn/two_way_merge/trunk/file1.txt
Sending svn/two_way_merge/trunk/file1.txt
Transmitting file data .
Committed revision 6.
+ echo 'contents of file3.txt'
+ svn add /home/fultonwi/svn/two_way_merge/trunk/file3.txt
A /home/fultonwi/svn/two_way_merge/trunk/file3.txt
+ svn commit -m 'Add file3.txt' /home/fultonwi/svn/two_way_merge/trunk
Adding svn/two_way_merge/trunk/file3.txt
Transmitting file data .
Committed revision 7.
+ svn checkout file:///home/fultonwi/svnrepos/two_way_merge/branches/mybranch /home/fultonwi/svn/two_way_merge/branches/mybranch
A /home/fultonwi/svn/two_way_merge/branches/mybranch/file2.txt
A /home/fultonwi/svn/two_way_merge/branches/mybranch/file1.txt
Checked out revision 7.
+ svn merge file:///home/fultonwi/svnrepos/two_way_merge/trunk /home/fultonwi/svn/two_way_merge/branches/mybranch
--- Merging r4 through r7 into '/home/fultonwi/svn/two_way_merge/branches/mybranch':
A /home/fultonwi/svn/two_way_merge/branches/mybranch/file3.txt
U /home/fultonwi/svn/two_way_merge/branches/mybranch/file1.txt
D /home/fultonwi/svn/two_way_merge/branches/mybranch/file2.txt
+ svn commit -m 'merge trunk to mybranch' /home/fultonwi/svn/two_way_merge/branches/mybranch
Sending svn/two_way_merge/branches/mybranch
Sending svn/two_way_merge/branches/mybranch/file1.txt
Deleting svn/two_way_merge/branches/mybranch/file2.txt
Adding svn/two_way_merge/branches/mybranch/file3.txt
Transmitting file data .
Committed revision 8.
+ svn log --stop-on-copy --verbose file:///home/fultonwi/svnrepos/two_way_merge/branches/mybranch
------------------------------------------------------------------------
r8 | fultonwi | 2009-12-18 09:49:49 +0000 (Fri, 18 Dec 2009) | 1 line
Changed paths:
   M /branches/mybranch
   M /branches/mybranch/file1.txt
   D /branches/mybranch/file2.txt
   A /branches/mybranch/file3.txt (from /trunk/file3.txt:7)

merge trunk to mybranch
------------------------------------------------------------------------
r4 | fultonwi | 2009-12-18 09:49:44 +0000 (Fri, 18 Dec 2009) | 1 line
Changed paths:
   A /branches/mybranch (from /trunk:3)

create mybranch
------------------------------------------------------------------------
+ svn update /home/fultonwi/svn/two_way_merge/trunk
At revision 8.
+ svn merge file:///home/fultonwi/svnrepos/two_way_merge/branches/mybranch /home/fultonwi/svn/two_way_merge/trunk
--- Merging r4 through r8 into '/home/fultonwi/svn/two_way_merge/trunk':
   C /home/fultonwi/svn/two_way_merge/trunk/file3.txt
   C /home/fultonwi/svn/two_way_merge/trunk/file2.txt
Summary of conflicts:
  Tree conflicts: 2
+ svn info /home/fultonwi/svn/two_way_merge/trunk/file2.txt
Path: /home/fultonwi/svn/two_way_merge/trunk/file2.txt
Name: file2.txt
Node Kind: none
Tree conflict: local delete, incoming delete upon merge
  Source left: (file) file:///home/fultonwi/svnrepos/two_way_merge/trunk/file2.txt_at_3
  Source right: (file) file:///home/fultonwi/svnrepos/two_way_merge/branches/mybranch/file2.txt_at_8

+ svn info /home/fultonwi/svn/two_way_merge/trunk/file3.txt
Path: /home/fultonwi/svn/two_way_merge/trunk/file3.txt
Name: file3.txt
URL: file:///home/fultonwi/svnrepos/two_way_merge/trunk/file3.txt
Repository Root: file:///home/fultonwi/svnrepos/two_way_merge
Repository UUID: 2d85baaf-695b-4046-adf0-a327d04775e6
Revision: 8
Node Kind: file
Schedule: normal
Last Changed Author: fultonwi
Last Changed Rev: 7
Last Changed Date: 2009-12-18 09:49:46 +0000 (Fri, 18 Dec 2009)
Text Last Updated: 2009-12-18 09:49:46 +0000 (Fri, 18 Dec 2009)
Checksum: 11a6d83f30e526ce94b4d4dace7231a8
Tree conflict: local add, incoming add upon merge
  Source left: (file) file:///home/fultonwi/svnrepos/two_way_merge/trunk/file3.txt_at_3
  Source right: (file) file:///home/fultonwi/svnrepos/two_way_merge/branches/mybranch/file3.txt_at_8

Received on 2009-12-20 19:03:05 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.