2012-06-06 73 views
0

我有两个分支从树干分开维护一年,比如分支A和B.现在我不得不合并到另一个。我想要的是比较两者中的变化,然后进行合并分支中的更改。在两个分支合并差异

我以前使用过SVN合并,但是我理解它的方式是,它将“差异”应用到另一个分支。我不希望所有的差异 - 只有更新。

是否有可能在SVN中做到这一点?

谢谢。

回答

0

合并进行3路合并。这是一个标准算法,其工作原理是这样的:

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

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

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

现在你想要所有的“更新”的变化。你必须以计算机可以理解的方式来定义那些意思。而且您必须小心以上第二个问题—这些更改可能取决于对方,您也必须选择依赖的更改。