When you have multiple branches of the same project in SVN, you probably want to keep these branches in sync, at least to a certain extend.
One example of this would be feature branches, i.e. a branch were a bigger feature is developed. You usually want to keep that feature branch in sync with trunk by merging all commits from trunk into that feature branch. Once the feature branch is ready to be merged back to trunk, you want to do just that with as little work as possible.
Another example are the KDEPIM enterprise branches. All changes from the enterprise branches are merged to trunk, but only some changes from trunk are merged back to the enterprise branches.
In both situation, svnmerge.py will help you by keeping track of the merges and assisting you in the process of merging.
It has the following useful features:
See also the svnmerge wiki page.
Note that svnmerge.py should not be confused with svn merge. The later is a normal SVN command, which is used, among others, by svnmerge.py. When refering to svnmerge on this page, I always mean svnmerge.py. Also, when referring to svn merge, I mean the built-in subversion command.
svnmerge somehow needs to keep track of which commits are merged and which are not. For this, it uses the SVN properties of the top-level project directory. The properties contain a list with revisions, and that list is updated each time you merge something with svnmerge.
You can view that list with
svn propedit svnmerge-blocked .
svn propedit svnmerge-integrated .
Never change those properties manually!
where to download (other links to tutorials) chmod +x in /usr/local/bin
svnmerge.py init help no need to if already done
getting available/unmerged revisions svnmerge --avail --log -b -S bla > avail trick (takes a lot of time!) open in text edit
block, merge or merge -M revisions from list merging more than one revision - when and when not to do
edit commit message: SVN_SILENT, small explaination sometimes svn ci -F svnmerge-commit-message
conflicts on . -> svn resolved + use mergediff to confirm (!) problems with korganizer/views problems with kcal in e3->e4