Tortoise SVN将多个分支合并为主干

时间:2016-04-19 02:01:07

标签: svn merge tortoisesvn

我知道与Tortoise合并SNV已经讨论过了(最后),但我无法找到答案。我知道我可以使用合并向导将dev分支合并到主干中,但是如果我想将 多个 分支合并到主干中,那么正确的工作流程是什么?

在我的情况下,我从项目主干创建了三个dev分支(每个开发人员一个)。最初,开发分支和主干是相同的。开发人员也在项目的不同区域工作,因此多人不使用相同的文件。所以,例如,我有trunk,b1,b2和b3,其中 trunk = b1 = b2 = b3

现在,经过一些开发,我想将每个dev分支的更改合并回主干。这是我感到困惑的地方。我已经读过你可以简单地将每个分支合并到主干中,一次一个(在合并下一个分支之前提交每个分支的变化),因为它们都共享相同的祖先,而Tortoise足够聪明,知道应该改变什么。所以:

b1 -> merge to trunk -> commit trunk (now trunk has b1 changes)
b2 -> merge to trunk -> commit trunk (now trunk has b1 and b2 changes)
b3 -> merge to trunk -> commit trunk (now trunk has b1, b2, and b3 changes)

我还读过你应该将dev分支的变化合并到其他的dev分支中,然后合并到trunk中,这样就不会出现覆盖问题(我认为tortoise足够聪明,可以避免)。所以:

b3 -> merge to b2 -> commit b2 (now b2 has b3 changes)
b2 -> merge to b1 -> commit b1 (now b1 and b2 and b3 changes)
b1 -> merge to trunk -> commit trunk (now trunk has b1, b2, and b3 changes)

请告知一种方法是否优于另一方法或是否存在缺陷。我担心的是,如果我合并一个分支的更改,然后合并另一个分支的更改,我将撤消第一个合并操作的更改或导致元数据问题。

我正在使用 TortoiseSVN版本1.8.8,构建25755 Subversion 1.8.10

谢谢!

1 个答案:

答案 0 :(得分:1)

在将分支合并回主干之前,应将主干合并到分支中。在Subversion 1.8之前,你必须在合并到trunk时指定--reintegrate标志,但Subversion通过新的automatic reintegration merge功能来处理这个问题。 SVN书籍的basic merging section中描述了以下工作流程:

  1. 将trunk合并到b1
  2. 在b1上提交更改
  3. 将b1合并到主干
  4. 在trunk上提交更改
  5. 删除b1
  6. 重复b2和b3。