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

rip*_*234 22 svn tortoisesvn merge svn-reintegrate

功能分支在合并(重新集成)回到主干后必须删除吗?

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

是这样吗?为什么?我能做些什么来规避这个?

更新 我问的是来自该工具的技术问题,而不是"方法问题".我打算在合并后继续处理功能分支.

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

Wim*_*nen 26

编辑:此问题似乎已在SVN 1.8中修复.有关SVN 1.8书籍基本合并部分已经更新,说可以重用功能分支.以下答案仅适用于较旧的SVN版本.


从svn书中关于基本合并的部分:

在Subversion 1.5中,一旦从分支到主干完成了--reintegrate合并,分支就不再可用于进一步的工作.它无法正确吸收新的行李箱更换,也无法再次正确地重新集成到行李箱.因此,如果您想继续处理功能分支,我们建议您销毁它,然后从主干中重新创建它:

在SVN 1.6和1.7中仍然如此.

对反射合并的优秀文章解释了为什么正是你不能或不应该回收特性分支.总结最重要的一点:

  • 您可能会在重新集成主干时努力解决冲突
  • 因此,主干中的重新集成提交包含来自功能分支 冲突解决工作的更改
  • 但是,subversion不会帮助您将此冲突解决工作合并回功能分支.它只是查看mergeinfo并认为"这些更改最初来自功能分支,无需再将它们合并到原点".

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

  • @JanŚwięcki:文档没有说.但我相信只将客户端升级到1.8就足够了,因为所有的合并逻辑都是在客户端实现的. (2认同)

Tom*_*ard 8

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

要做到这一点,只需要从主干到分支进行一系列修改.在主干中指定您执行分支重新集成的修订,并将其标记为"仅记录合并",从主干修订到分支.

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

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

编辑2

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

重新整合后,可以选择销毁和重新创建分支.要了解其工作原理,您需要了解分支在重新集成后最初不适合进一步使用的原因.