26

在我现有的(SVN 1.5 之前)合并策略中,我们在创建分支时创建了一个 Trunk 的副本(称为 BasePoint),以便稍后在合并期间进行引用。

当我们需要将一个分支合并回主干时,我们执行 2 个操作。

  1. 从 BasePoint 合并到 LatestTrunk(Trunk 可能从原始分支开始移动)到 Branch 的工作副本,然后提交。

    此时我们通常会检查合并到分支中没有损坏任何东西

  2. 从 LatestTrunk 合并到 LatestBranch 回到主干的工作副本,然后提交。

文档建议我在主干上使用新的重新集成合并,然后从分支合并。

我是否需要先从主干合并到开发分支,或者这是否包含在新的重新集成选项中?

换句话说,新merge --reintegrate功能是代表“我以前的每个合并”还是“整个操作”?

(FWIW 我使用的是 TortoiseSVN 1.5.1)

4

3 回答 3

28

简短的回答是,您仍然必须执行这两个步骤。

SVN 书将合并过程解释为:

  1. svn在分支工作副本中合并http://trunk/path
  2. svn merge --reintegrate http://branch/path在主干工作副本中

请注意缺少修订号。这可能不像是一个巨大的胜利。新的酷炫之处在于能够在您在分支中编码时重新运行合并,从而使您可以使分支保持最新的主干更改(无需手动记录修订号!)。SVN 跟踪需要从主干合并的内容以及分支独有的更改。完成分支后,--reintegrate 使用该数据仅自动将分支更改合并回主干。

于 2008-10-06T14:11:53.427 回答
2

我相信 reintegrate 实际上并没有执行这两个操作,而是用于从更新的分支合并回主干。您仍然需要首先执行第一组合并/提交操作来更新分支。

这是Subversion Book的链接。有可能以死树格式获得这本书。

从链接中,听起来使用 --reintegrate 处理了一些奇怪的情况,与仅使用直接补丁相比,可能就像合并通常所做的那样(阅读“为什么不使用补丁代替?”部分)。

于 2008-10-06T13:10:06.907 回答
2

一篇关于在 svn 中合并问题(以及 reintegrate 所做的事情)的好博文在这里

于 2008-11-17T03:21:07.840 回答