在两个分支中合并差异

时间:2012-06-06 08:59:38

标签: svn

我有一个分支机构的两个分支,它们已经分开维护了一年,分支A和B.现在我不得不将一个分支合并到另一个分支。我想要的是比较两者的变化,然后比较更新的变化,进入合并的分支。

我过去曾使用SVN合并,但我理解的方式是它将一个分支中的“差异”应用于另一个分支。我不想要所有的差异 - 只是更新。

是否可以在SVN中执行此操作?

感谢。

1 个答案:

答案 0 :(得分:0)

Merge执行3向合并。这是一个标准算法,其工作原理如下:

  • 找到最新的共同祖先,或简称修订版。这是创建分支之前的修订版或从一个版本合并到另一个版本的最后一个修订版。
  • 对于'mine'中相同的每一行(你已经检查出来的)作为'base',但是'他们'(合并的参数)不同,该行来自'他们'。
  • 对于'他们'中与'base'相同的每一行,使用本地版本(包括它没有从基础更改的情况)。
  • 对于'我'和'他们'中相同的每一行,无论基数是什么,都会使用该版本。
  • 对于'base','mine'和'the's'三个不同的每一行,都存在冲突,您必须手动解决它。

因此,这适用于来自两个分支的所有更改。如果双方都做了相同的改变,那么应用它。如果相同的代码以不同的方式更改,则会发生冲突,您必须解决它。而且你不会看到它来自哪个特定版本,它们都汇总在一起。

现在,如果这不是您想要的,另一个选项是手动列出要合并的修订。这将仅应用在那些特定修订中进行的更改,每次连续范围(算法实际上是相同的,但基础是所选范围开始之前的修订)。这意味着您必须亲自挑选您想要的更改。这种方法存在两个问题:这将是一项很多工作,您必须小心选择所需的所有更改,以便以后的工作。

现在想要所有“更新”的变化。您必须以计算机可理解的方式定义哪些意思。你必须要小心上面的第二个问题 - 变化可能相互依赖,你也必须选择依赖的变化。