Subversion分支在v1.6中重新集成

时间:2010-07-22 13:56:26

标签: svn merge branch

Per this old question,使用SVN 1.5,多次重新集成分支是有问题的,应该避免。

有一些隆隆声,“这是一个已知问题,应该在SVN 1.6中修复。”那是这样的吗?它固定了吗?我可以多次重新融合吗?

3 个答案:

答案 0 :(得分:56)

将分支主题重复合并到主干:在每次合并时执行以下

  1. svn merge --reintegrate <topic> <trunk>,正如您通常所做的那样。 (=> r M
  2. svn merge --record-only -c M ^/<trunk> <topic>请注意record-only选项。
  3. 步骤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以来,客户端和服务器端都有许多改进!