Subversion 1.5 merge problems

Last days we have had several problems trying to merge two branches using subversion. I wanted to merge trunk to modularity but I always obtained this error:

svn: Working copy path 'lib/runtime' does not exist in repository

This happened using any merge command (svn merge modularity, svn merge trunk@r1 trunk@r2…).
It seems to be related with subversion issue 3067 and the only way to make it work was checking out the svn branch that solves this issue compiling it and using it to do the merge. The steps to do that are:

1) svn co http://svn.collab.net/repos/svn/branches/issue-3067-deleted-subtrees/ svn-mod
2) cd svn-mod
3) ./autogen.sh
4) ./configure
5) make

After doing the merge using that svn client the working copy cannot be used anymore with the old svn client.

Reintegrating multiple branches to trunk

I have some doubts about how to merge back to trunk the following case: I have a project branch that is already reintegrated in the trunk and another branch that started from the first one, the problem is how to reintegrate it to the trunk.

Continue reading

Merging with subversion 1.5

Some weeks ago Openbravo subversion repository was upgraded to version 1.5.

The greatest feature this new version has is the merge tracking. From now on it is not necessary to manually have into account the revisions that have already been merged between branches.

Now merging is as easy as:

myWCbranch$ svn merge https://dev.openbravo.com/svn/openbravo/trunk

This command will merge all the not already merged changes in trunk to my branch working copy. And now the best part: when I’ve finished with by branch, to merge it back to the trunk this command will do all the work:

myWCtrunk$ svn merge --reintegrate https://dev.openbravo.com/svn/openbravo/myBranch

I hope this will save us a lot of headhaches…

There is a new feature personally I don’t like is the the interactive conflict resolution, specially when merging big projects it is annoying to have to manually decide about each conflict while the process has not been finished yet. It is possible to deactivate it editing the .subversion/config file to add in the [miscellany] section the following line:

interactive-conflicts = no

There is some documentation about branches and merges in the Openbravo wiki.