重新整合分支与合并两个不同的树:TortoiseSVN

Reintegrate a branch vs Merging Two Different Trees : TortoiseSVN

我打算使用 TortoiseSVN 资源管理器客户端将一个分支合并到主干。 (我还需要做相反的事情,即从主干合并到分支。)

我的做法

这就是我计划使用合并两棵不同的树将分支合并到主干的方式:

Merge Trunk in to Branch using tortoise

检查我本地盒子上的后备箱。右键单击签出的副本,然后 select 合并两棵不同的树。在下面 来自:(开始URL和revision of the range to merge),我会提到主干URL和下 致:(结束URL和合并范围的修改),我会提到分支URL

备选方案

当我右键单击 trunk local copy 和 select Merge 时,我看到两个相关选项

1) Reintegrate a branch

2) Merging Two Different Trees

但我不确定它们之间有什么区别:哪个更好地将分支合并到主干?

更新:- 我在网上读到的大多数地方都说应该使用 Merge a range of revisions(而不是 Reintegrate the branch 将分支合并回主干). 所以要合并 100 个不连续的修订,我需要先记下这些修订,然后为 Merge a range of revisions 提及那些修订。对吗?

如何合并

您几乎肯定想要合并一系列修订,但您可能会在 Tortoise 中看到三种可能性:

  • 重新整合一个分支:更新你的客户端!这个不行longer 出现在 Tortoise 1.8 中,它更擅长计算如何合并。
  • 合并一系列修订:通常主干和分支共享一个共同的起源,因为通常从主干创建分支;然后他们开始分歧,如果你想合并更改从一个到另一个(并且你的 Subversion 服务器是 运行 至少 1.5),你应该使用 Merge a range of revisions.
  • 合并两个不同的树:如果你的版本库中的分支不是由 Subversion 复制操作创建的,或者如果你使用的是旧的(1.5 之前的)服务器)Subversion 不能所以很容易找出它应该改变什么,你需要给它更多的信息。在这种情况下,您可能必须使用合并两个不同的树

您可以考虑在没有 Tortoise 的情况下使用 svn 命令,但我认为您会发现 Tortoise 会更顺利地引导您完成该过程,并且 Edit conflicts 功能 – 如果您需要 –很有帮助。

您可能想要合并所有更改或仅合并部分更改;在后一种情况下,如果您使用 Tortoise 并提交了正确的日志消息,您将能够在合并对话框中识别并 select 您想要的修订;已经合并的修订版也将变灰(对于服务器 > 1.5)。也就是说,最好不要在合并之前将它留得太久:这样你可以更好地记住你做的事情,并且分支可能会有更少的分歧,从而减少冲突的风险。

合并后

如果合并后出现任何冲突,最简单的方法是保持合并对话框打开,然后一个一个地右键单击有冲突的文件,然后选择编辑冲突 – 这将向您显示代码中已在主干和分支中修改的地方,您将必须弄清楚如何手动组合它们。如果您确实关闭了对话框,您可以使用 检查修改 对话框来获得相同的可能性;您甚至可以使用 Commit 对话框,但通常最好在合并代码正确之前不要实际提交。

解决所有冲突后,编译并测试您的系统(最好不要进行任何不相关的修改),并在满意后提交。 不要太担心你会把事情搞砸:因为你总是在工作副本中合并,所以只要你从头开始,不要过早提交,你就不会造成任何伤害。

参考资料

我建议您还查看 http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html and perhaps the Subversion documentation at http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html 上的合并的 Tortoise 文档以获取更多详细信息和提示。