TortoiseSVN 将分支合并至主干

38

我知道这个问题已经被问过多次,所以如果我再问一遍,我很抱歉,但我只是想确保我理解不同的合并之间的区别。

我是这个项目上唯一的开发人员,所以我不担心覆盖其他人的工作。

我创建了这个项目的一个分支,因为我即将添加一些新功能,在当前代码中如果需要修复任何错误,我不想处理半成品的代码。因此主干包含“稳定”的版本,而分支基本上是alpha/beta版本。

在我有机会真正开始这些更改之前,我解决了几个错误并将它们提交到分支版本。我想将分支合并回主干以提交这些修复,然后我可以开始在分支上工作进行我的更改。

当我进入TortoiseSVN并选择合并时,我有两个选项:

合并一系列修订版或者合并两个不同的树

第一个是用于我已经对一个分支或主干进行了修订,并想将这些更改移植到不同的分支中。

第二个是当我想将两个不同分支的差异合并到我的工作副本中时使用。

当我尝试第一个选项时,选择要从中合并的URL是我的分支和所有修订版。 点击下一步,并在单击测试后我得到了树冲突,因为某些文件被移动/删除/添加。

当我使用第二个选项尝试相同的事情(使用头修订版进行测试合并)时,它似乎可以工作。哪种方法是正确的?或者都不适合我想做的事情吗?

3个回答

35
在您的情况下,我认为您不需要“合并两个不同的树”,因为您的“主干”和“分支”之间存在关系,所以这不是您需要的。
如果您想将更改从“分支”带到“主干”,那么“重新整合分支”就是您需要的。
您可以使用“合并一系列修订版本”将更新从“主干”合并到“分支”(更新到最新稳定版本),也可以将“分支”合并到“主干”(我主要使用此选项)。
也许this SO-Question也可以帮助您,here是该主题的“标准文献”。
更新:
(Tortoise)合并选项:

enter image description here

更新二:

(乌龟)当前版本中的合并选项:

enter image description here

"

合并一系列的修订版本"通常用于"分支到主干"的合并。

"

7
我看到有几个人提到了重新整合分支,但我并没有看到这个选项。我在屏幕截图中看到它被列在了你所链接的问题上,但当我进行合并操作时,我只能选择合并一段范围或合并两个不同的树。 - merk
不是真的。也许是Subversion版本...你用哪个版本?我不确定,但版本<1.7可能会导致缺少选项。 - Micha
1
我正在使用最新版本的Subversion和Visual SVN服务器。虽然在最初创建分支并将我的工作副本切换到该分支时,我可能使用的是低于1.7的版本。明天我会在工作中测试它,通过创建另一个分支并查看是否可以重新集成来验证。 - merk
看起来你所说的选项最近已经从TortoiseSVN中删除了 https://code.google.com/p/tortoisesvn/issues/detail?id=516 根据那个问题,重新整合选项实际上与选择合并一系列修订版本并将修订版本范围留空相同。所以我猜也许你仍在使用旧版本的Tortoise? - merk
这是一个关于编程的问题:http://stackoverflow.com/questions/18970598/tortoisesvn-merging-a-branch-to-trunk - merk
显示剩余8条评论

9

来自 SVN 1.8 文档:“‘重新整合’这个术语来自于合并选项 --reintegrate。在 Subversion 1.8 中,该选项已被弃用(它会自动检测何时需要重新整合合并),但在执行重新整合合并时,Subversion 1.5 到 1.7 客户端仍需要使用该选项。” 链接 - DataDino

4
在合并对话框下,有一个选项是“合并(旧式)”。

Old style Reintegration


1
那个复选框很重要。勾选它似乎是此用例中唯一可行的正确选项。 - Vada Poché

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接