【问题标题】:Tortoise SVN Merge Multiple Branches into TrunkTortoise SVN 将多个分支合并到主干
【发布时间】:2016-08-10 23:21:06
【问题描述】:

我知道与 Tortoise SNV 的合并已经讨论过(详细地),但我找不到我的情况的答案。我知道我可以使用合并向导将开发分支合并到主干中,但是如果我想将 多个 分支合并到主干中,正确的工作流程是什么?

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

现在,经过一些开发,我想将每个开发分支的更改合并回主干。这就是我感到困惑的地方。我读过你可以简单地将每个分支合并到主干中,一次一个(在合并下一个分支之前提交每个分支的更改),因为它们都具有相同的祖先,而 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 分支中,然后合并到主干中,这样就不会出现覆盖问题(我认为乌龟足够聪明,可以避免)。所以:

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,构建 25755Subversion 1.8.10

谢谢!

【问题讨论】:

  • 无论您遵循哪种工作流程,您都不必担心撤消更改。 Subversion 将标记合并冲突,您可以在提交更改之前查看更改。您始终可以还原对工作副本的任何操作,包括合并操作。它仅在您提交更改时记录。也就是说,您绝对可以通过使用适当的工作流程来避免合并困难。有关更多信息,请参阅我的答案。

标签: svn merge tortoisesvn


【解决方案1】:

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

  1. 将主干合并到 b1
  2. 在 b1 上提交更改
  3. 将 b1 合并到主干
  4. 在主干上提交更改
  5. 删除b1

对 b2 和 b3 重复。

【讨论】:

  • 感谢您的建议。你能告诉我为什么要在将 dev 分支合并到主干之前将主干合并到 dev 分支吗?我以前读过有关这样做的内容,但不明白为什么知道主干没有改变,为什么要这样做。这只是一个好习惯吗?
  • 如果主干没有变化,您不需要将主干合并到您的分支中。在一般情况下,存在冲突的可能性,最好在合并到主干之前在分支上解决这些冲突。一旦您将主干的 HEAD 合并到您的分支中,解决了所有冲突并提交了更改,您在将分支重新集成合并到主干时将没有冲突(在 1.8 中运行合并时,重新集成合并是隐式的)。请注意,重新集成 b1 后主干会发生变化,这就是我描述一般工作流程的原因。
  • 我会再读一遍。也许第二次会更有意义。另外,我想我只是回答了我自己的问题。在分支到主干合并之前从主干合并到开发分支是这样,当前被合并的开发分支会从先前的合并中获得更改。基本上是在做我展示的第二个工作流程,但通过主干本身和纠正冲突。正确的?再次感谢您的澄清。
  • 是的,没有详细说明为什么在你的情况下最好只合并到主干,这是正确的。
猜你喜欢
  • 2010-11-25
  • 2011-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 2015-09-15
  • 2014-02-01
相关资源
最近更新 更多