在将功能分支合并(重新集成)回主干后,是否必须删除功能分支?
我更喜欢不断地从我的功能分支中来回合并更改 - 我相信这可以将冲突降到最低。但我知道,一旦你使用reintegrate merge to trunk,就应该删除一个功能分支。
是这样吗?为什么?我该怎么做才能绕过这个?
更新 我问的是这个工具带来的技术问题,而不是“方法论问题”。我打算在合并后继续处理功能分支。
更新顶部答案确实指定了一个相当复杂的过程(合并,删除和重新分配)。在TortoiseSVN中有没有简单的方法来实现这一目标?不应该吗?
答案 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解释为什么确切地说您不能或不应该回收功能分支。总结最重要的一点:
删除功能分支和重新分支很便宜,可以避免这个问题。
答案 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候选/发布存储库,那么你就不会这样做了。