SVN分支之间的合并

时间:2010-07-15 20:57:10

标签: svn version-control merge

我已经在SVN分支中工作了一段时间。我定期将更改从trunk合并到我的私有分支中,这样我就可以使用here描述的过程获得其他所有人的更改。这似乎工作正常。

现在我已准备好将我的更改合并到trunk中。我试图通过合并从我分支的点开始并以分支的HEAD结束的修订范围来做到这一点。但是当我尝试这样做时,SVN报告了许多树冲突。看起来在trunk中添加的每个文件(并合并到我的分支中)都存在冲突。

我希望通过从主干周期性地合并到我的分支中,相反方向的合并将是微不足道的。显然不是。我做错了什么?

3 个答案:

答案 0 :(得分:3)

你需要re-integrate分支。 此外,当您将主干合并回您的分支时,您应该已经与祖先合并,否则SVN不知道哪些修订已合并。

答案 1 :(得分:1)

您需要将分支重新集成到主干中。从干净的行李箱检查开始,然后您应该将分支合并(或重新整合,如果您使用TortoiseSVN),将分支合并到行李箱中。

在合并期间,您很可能会遇到一些冲突。发生冲突并不意味着存在问题。在提交回主干之前解决这些问题。

此外,您/ server / repository可能正在使用没有合并跟踪的旧版SVN(1.5之前版本)。这可能是冲突负载的来源,因为SVN不会知道您合并到分支中的所有修订,并且会尝试将这些修订中的更改合并到主干中第二次。合并跟踪有助于SVN忽略已经在主干中进行的分支更改。

答案 2 :(得分:0)

假设您使用的某些版本的Subversion支持合并跟踪(v1.5或更高版本),您需要的魔力是“重新集成合并”。

SVN中有一些不同类型的合并,“重新集成合并”与您为保持分支机构最新所执行的“增量合并”不同。简而言之,增量合并(这是默认的合并类型)会在逐个版本的基础上带来变更。如果你在回到主干时尝试其中一个合并,你将把你在分支中做出的所有变化带回主干,加上引入你的分支的主干中的所有变化。这就是你看到冲突的原因。

SVN书很好地解释了这一点;仔细阅读this section以便更好地处理此问题。