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

时间:2015-06-28 18:05:37

标签: svn merge tortoisesvn

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

我的方法

这就是我计划使用Merging Two Different Trees将分支合并到主干的方法:

Merge Trunk in to Branch using tortoise

检查我本地方框上的行李箱。右键单击签出副本,然后选择合并两个不同的树。下 从:(开始URL和要合并的范围的修订),我将提到主干URL和下 要:(结束URL和要合并的范围的修订版),我将提到分支URL

替代

当我右键单击trunk local copy并选择Merge时,我会看到两个相关的选项

1) Reintegrate a branch

2) Merging Two Different Trees

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

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

1 个答案:

答案 0 :(得分:2)

如何合并

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

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

你可以考虑在没有Tortoise的情况下使用svn命令,但我想你会发现Tortoise会更顺畅地指导你完成整个过程,Edit conflicts函数 - 如果你需要的话 - 很漂亮有帮助的。

您可能想要合并所有更改或仅合并一些;在后一种情况下,如果你使用Tortoise并提交了不错的日志消息,你将能够在合并对话中识别并选择你想要的修订;已合并的修订版也将显示为灰色(对于服务器> 1.5)。也就是说,最好不要在合并前留下太长时间:这样你就能记住你做得更好,分支机构可能会有更少的分歧,减少冲突的风险。

合并后

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

解决了任何冲突,编译并测试你的系统(最好不做任何不相关的修改),并在你开心后提交。 不要太担心你会搞砸了:因为你总是在工作副本中合并,只要你从干净的石板开始就不会过早地提交,你就不会受到伤害。

参考

我建议您查看http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html上的合并的Tortoise文档以及http://svnbook.red-bean.com/en/1.7/svn.branchmerge.basicmerging.html上的Subversion文档,了解更多详情和提示。