Subversion分支在v1.6重新整合

根据这个老问题 ,使用SVN 1.5,多次重新集成分支是有问题的,应该避免。

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

要将分支主题重复合并到主干中,请执行以下操作:

  1. 像正常情况一样, svn merge --reintegrate <topic> <trunk> 。 ( => r M
  2. svn merge --record-only -c M ^/<trunk> <topic>请注意record-only选项。

步骤2实质上是告诉主题分支考虑合并提交(步骤1中的版本M )其历史的一部分。 这种合并修订是在重新融合过程中通常会引起问题的合并修订。 svn尝试在第二次集成主题时撤销rM

所以,反复重新融入工作,只是不会自动。 🙂

我最终通过对svn源码和匹配testing (search“def multiple_reintegrates”)的启发性提交消息find了这个解决scheme。 这是svn-devs在当前发行版中发现和使用的“巧妙技巧”。 它甚至被添加到更新的文档 。 结果仍然不如DVCS的合并属性,但至less是function性的。

唯一的缺点是(截至2010年6月2日的一个公开问题 )显然svn log -g输出是混乱的。 我猜这是风险。

虽然1.6确实解决了合并跟踪问题,但我不认为您可以重新使用集成的分支。

但这不是问题。 由于分支完全集成到主干中,只需将其删除并在其中创build一个新的分支(同名)即可。

是的你可以。 你问的问题已经在Subversion 1.8中解决了。

从SVN 1.8开始,– --reintegrate选项被弃用 ,重新合并现在自动执行(或自动 )。 请参阅Subversion 1.8发行说明并阅读更新的SVNBook 1.8 | 重新整合分支章节:

如果您select在将其重新集成到主干后不删除分支,则可以继续从主干执行同步合并,然后再次重新合并分支。 如果您这样做,只有在第一次重新合并后在您的分支上所做的更改合并到中继。

只有Subversion 1.8支持这个function分支的重用。 之前的版本需要一些特殊的处理才能重新集成一个function分支。 有关详细信息,请参阅本章的早期版本: http : //svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html#svn.branchemerge.basicmerging.reintegrate

重要提示: 如果您仍然使用Subversion 1.7或更旧的版本,您应该升级您的Subversion客户端和服务器。 目前和最好的SVN版本是1.9,截至2016年。没有真正的理由使用很旧的Subversion版本,如1.5,1.6甚至1.7。 自1.6版以来,在客户端和服务器端进行了许多改进!