Subversion branch reintegration in v1.6 [duplicate]

To merge a branch topic into the trunk repeatedly: Do the following on every merge.

  1. svn merge --reintegrate <topic> <trunk>, as you would normally. (=> rM)
  2. svn merge --record-only -c M ^/<trunk> <topic>. Note the record-only option.

Step 2 essentially tells the topic branch to consider the merge commit (revision M, from step 1) part of its history. This merge-revision is the one that usually causes problems during reintegration; svn tries to undo rM when integrating topic a second time.

So, repeated reintegration works, just not automatically. 🙂

I eventually found this solution through an enlightening commit message to the svn source and the matching test (search for “def multiple_reintegrates”). This is a “clever trick” discovered and used by svn-devs with the current releases. It’s even been added to more recent documentation. The result is still not as good as a DVCS’s merging properties, but it’s at least functional.

The only broad downside (as per an open issue as of June 2, 2010) is that apparently the svn log -g output is messy. I guess this is the risk.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)