views:

296

answers:

2

What is the difference between 'svnmerge' (alias svnmerge.py, the python script that comes with svn) and 'svn merge' (Subversion 1.5's native merge-tracking)? Which one do you recommend?

+2  A: 

svnmerge is an external tool for "automatic branch management", whereas svn merge is the basic tool for mergin branches in Subversion itself. As you don't tell what you want to do, it's a bit hard to recommend either.

Tuure Laurinolli
+5  A: 

Prior to 1.5, the Subversion merge command didn't leave much information on which branches were reintegrated to the trunk, so svnmerge.py was written to make up for this lack of traceability.

Starting with version 1.5, meta-information is generated by svn at each merge, the svn:mergeinfo property which is transparently appended to the target paths. You can appreciate that for example if you use TortoiseSVN, which can show you a graph.

This is not perfect yet though, as many would rightly say.

So you should see what your needs are, if the standard svn merge is not enough for you, have a look at scripts like svnmerge but in that case, make sure everyone uses the same tool.

In my experience, the standard option is more than enough in most cases.

RedGlyph
Does this answer implies that svn merge is less capable than svnmerge?
Angel Chiang
Not really since 1.5. There are some features in `svnmerge` that don't exist in the native Subversion merge, like keeping a list of merged/unmerged commits, blocking some revisions, but apparently the disadvantages can outweight those not-so-useful additional features, as you can see here: http://blogs.open.collab.net/svn/2007/10/subversion-15-m.html. Also, there are more and more reports of `svnmerge` problems with Subversion 1.6. You can see the feature list and FAQ on their website: http://www.orcaware.com/svn/wiki/Svnmerge.py
RedGlyph