22

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

我更喜欢不断地从我的功能分支来回合并更改 - 我相信这可以将冲突降至最低。但是我知道,一旦您使用 reintegrate 合并到主干,应该删除功能分支。

是这样吗?为什么?我能做些什么来规避这种情况?

更新 我问的是来自工具的技术问题,而不是“方法问题”。我打算在合并后继续在功能分支上工作。

更新最佳答案确实指定了一个相当复杂的过程(合并、删除和重新分支)。在 TortoiseSVN 中是否有一种简单的方法可以实现这一点?不应该吗?

4

5 回答 5

26

编辑这个问题似乎已在 SVN 1.8 中修复。SVN 1.8 书中关于基本合并的部分已更新为可以重用功能分支。下面的答案仅适用于较旧的 SVN 版本。


从svn book 中的基本合并部分:

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

在 SVN 1.6 和 1.7 中仍然是这种情况。

这篇关于反射合并的优秀文章解释了为什么你不能或不应该回收特性分支。最重要的几点总结:

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

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

于 2009-05-18T21:13:38.210 回答
9

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

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

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

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

编辑 2

使重新集成的分支保持活动状态 ( http://svnbook.red-bean.com/en/1.7/svn.branchmerge.advanced.html )

在重新集成后,除了销毁和重新创建分支之外,还有另一种方法。要了解它为什么起作用,您需要了解为什么分支在重新集成后最初不适合进一步使用。

于 2009-05-18T22:04:09.340 回答
4

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

请参阅Subversion Book 中的使重新集成的分支保持活动状态。

于 2011-01-16T22:49:58.060 回答
3

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

于 2013-09-12T19:45:54.130 回答
-1

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

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

但是,如果您没有很多子分支,并且您使用的是 subversion 1.5+,则可以避免这种情况,这有助于避免合并冲突。

当然,如果您的“主干”被用作 beta/候选发布/发布存储库,那么您不应该这样做。

于 2009-05-18T13:53:33.527 回答