重新集成合并到trunk后使用subversion功能分支是否安全?

时间:2009-05-18 13:48:05

标签: svn tortoisesvn merge svn-reintegrate

在将功能分支合并(重新集成)回主干后,是否必须删除功能分支?

我更喜欢不断地从我的功能分支中来回合并更改 - 我相信这可以将冲突降到最低。但我知道,一旦你使用reintegrate merge to trunk,就应该删除一个功能分支。

是这样吗?为什么?我该怎么做才能绕过这个?

更新 我问的是这个工具带来的技术问题,而不是“方法论问题”。我打算在合并后继续处理功能分支。

更新顶部答案确实指定了一个相当复杂的过程(合并,删除和重新分配)。在TortoiseSVN中有没有简单的方法来实现这一目标?不应该吗?

5 个答案:

答案 0 :(得分:25)

修改此问题似乎已在SVN 1.8中修复。 section on basic merging from the SVN 1.8 book已更新,表示可以重复使用功能分支。以下答案仅适用于较旧的SVN版本。


来自svn书中basic merging的部分:

  

在Subversion 1.5中,曾经一次   --reintegrate merge是从分支到trunk,分支是no   更长的可用于进一步的工作它的   无法正确吸收新的行李箱   变化,也不是正确的   再次重新融入行李箱。为了这   原因,如果你想继续努力   我们推荐您的功能分支   摧毁它然后重新创造它   从后备箱:

SVN 1.6和1.7仍然如此。

excellent article on reflective merges解释为什么确切地说您不能或不应该回收功能分支。总结最重要的一点:

  • 你可能会努力解决冲突 与树干重新融合时
  • 在trunk中重新集成提交 因此包含两个变化 来自功能分支 冲突解决工作
  • 然而,颠覆不会帮助你 合并这个冲突解决工作 回到功能分支。它很简单 看看mergeinfo并思考 “这些变化最初来自于 功能分支,无需合并 他们又来了他们的起源“。

删除功能分支和重新分支很便宜,可以避免这个问题。

答案 1 :(得分:8)

我们经常这样做(SVN 1.5及以上)。您只需确保不要将这些更改重新合并到分支中。

为此,只需将一系列修订从主干合并到分支。在主干中指定您执行分支重新集成的修订,并将其标记为“仅记录合并”,从主干修订到分支。

一旦你这样做,你应该很高兴。

修改
wcoenen从关于冲突的文章中提出的观点是有效的。如果在执行重新集成之前未将主干更改同步到分支中,则会出现冲突问题。我们保持分支同步并且在多次重新集成后继续重用分支没有问题。

编辑2

保持重新整合的分支活着http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html

在重新整合之后,还有另一种方法可以摧毁和重建分支。要理解它的工作原理,你需要理解为什么分支在重新整合后最初不适合进一步使用。

答案 2 :(得分:4)

是的,您可以执行仅记录合并以使分支保持活动状态。

请参阅Subversion Book中的Keeping a reintegrated branch alive

答案 3 :(得分:3)

Subversion 1.8允许您在两个分支之间来回重复合并,而1.7及更早版本则没有。请阅读此处的发布说明:http://subversion.apache.org/docs/release-notes/1.8.html#auto-reintegrate

答案 4 :(得分:-1)

这一切都取决于您的个人意见,以及合并到主干的人数。

如果你有很多人合并,那么最好只在它完成后合并一个分支,然后删除它(你总是可以通过返回它存在的最后一个版本来访问它) )。如果你试图在这种情况下不断融合,你就会迷惑自己。

但是,如果您没有很多子分支,而且您使用的是subversion 1.5+,则可以避免使用它,这有助于避免合并混淆。

当然,如果你的“主干”被用作beta / release候选/发布存储库,那么你就不会这样做了。