Tortoise SVN 合并多个分支到主干
Tortoise SVN Merge Multiple Branches into Trunk
我知道已经(详细)讨论了与 Tortoise SNV 的合并,但我找不到适合我的情况的答案。我知道我可以使用合并向导将开发分支合并到主干中,但是如果我想将 multiple 分支合并到什么是正确的工作流程后备箱?
在我的情况下,我从项目主干创建了三个开发分支(每个开发人员一个)。最初,开发分支和主干是相同的。开发人员也在项目的不同区域工作,因此多个人不会使用相同的文件。因此,例如,我有主干、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)
我还读到你应该将开发分支的更改合并到其他开发分支中,然后合并到主干中,这样就不会出现覆盖问题(我认为乌龟足够聪明,可以避免)。所以:
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。
谢谢!
在将分支合并回主干之前,您应该将主干合并到分支中。在 Subversion 1.8 之前你必须在合并到主干时指定 --reintegrate
标志,但是 Subversion 通过 SVN book 的新 automatic reintegration merge capabilities. The following workflow is described in the basic merging section 来解决这个问题:
- 将主干合并到 b1
- 提交对 b1 的更改
- 将 b1 合并到主干
- 在主干上提交更改
- 删除 b1
重复 b2 和 b3。
我知道已经(详细)讨论了与 Tortoise SNV 的合并,但我找不到适合我的情况的答案。我知道我可以使用合并向导将开发分支合并到主干中,但是如果我想将 multiple 分支合并到什么是正确的工作流程后备箱?
在我的情况下,我从项目主干创建了三个开发分支(每个开发人员一个)。最初,开发分支和主干是相同的。开发人员也在项目的不同区域工作,因此多个人不会使用相同的文件。因此,例如,我有主干、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)
我还读到你应该将开发分支的更改合并到其他开发分支中,然后合并到主干中,这样就不会出现覆盖问题(我认为乌龟足够聪明,可以避免)。所以:
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。
谢谢!
在将分支合并回主干之前,您应该将主干合并到分支中。在 Subversion 1.8 之前你必须在合并到主干时指定 --reintegrate
标志,但是 Subversion 通过 SVN book 的新 automatic reintegration merge capabilities. The following workflow is described in the basic merging section 来解决这个问题:
- 将主干合并到 b1
- 提交对 b1 的更改
- 将 b1 合并到主干
- 在主干上提交更改
- 删除 b1
重复 b2 和 b3。