Per this old question,使用SVN 1.5,多次重新集成分支是有问题的,应该避免。
有一些隆隆声,“这是一个已知问题,应该在SVN 1.6中修复。”那是这样的吗?它固定了吗?我可以多次重新融合吗?
答案 0 :(得分:56)
将分支主题重复合并到主干:在每次合并时执行以下。
svn merge --reintegrate <topic> <trunk>
,正如您通常所做的那样。 (=> r
M
)svn merge --record-only -c M ^/<trunk> <topic>
。 请注意record-only
选项。 步骤2基本上告诉主题分支考虑合并提交(修订版 M
,从步骤1)部分历史记录。这种合并修订通常会在重新融合过程中造成问题; svn在第二次集成主题时尝试撤消 rM 。
因此,重复的重新整合工作,只是不自动。 :)
我最终通过enlightening commit message to the svn source和匹配的test找到了这个解决方案(搜索“def multiple_reintegrates”)。这是svn-devs在当前版本中发现并使用的“聪明技巧”。它甚至被添加到more recent documentation。结果仍然不如DVCS的合并属性,但它至少是功能性的。
唯一的广泛缺点(截至2010年6月2日的open issue)显然svn log -g
输出是混乱的。我猜这是风险。
答案 1 :(得分:1)
虽然1.6确实解决了合并跟踪问题,但我认为您不能重新使用集成分支。
但这不是问题。由于分支完全集成到主干中,只需将其删除并在其位置创建一个新分支(具有相同名称)。
答案 2 :(得分:1)
是的,你可以。您询问的问题在Subversion 1.8中得到了解决。
从SVN 1.8开始,--reintegrate
选项已弃用,现在重新整合合并自动(或自动 :))。请参阅Subversion 1.8 Release Notes并阅读更新的SVNBook 1.8 | Reintegrating a branch章节:
如果您选择在将分支重新集成到分支后不删除分支 trunk可以继续从trunk执行同步合并然后 再次重新整合分支。如果您这样做,只会进行更改 第一次重新整合后你的分支被合并到主干。
...
只有Subversion 1.8支持重用功能分支。前 版本需要在功能分支之前进行一些特殊处理 不止一次重新融合。请参阅本章的早期版本 欲获得更多信息: http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate
重要提示: 如果仍使用Subversion 1.7或更早版本,则应升级Subversion客户端和服务器。截至2016年,当前和最佳版本的SVN是1.9。没有真正的理由使用非常旧的Subversion版本,如1.5,1.6甚至1.7。自版本1.6以来,客户端和服务器端都有许多改进!