To merge a branch topic into the trunk repeatedly: Do the following on every merge.
svn merge --reintegrate <topic> <trunk>
, as you would normally. (=> r
M
)
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.