0

我有两个来自主干的分支,它们分别维护了一年多,比如分支 A 和 B。现在我必须将一个合并到另一个中。我想要的是比较两者的变化,然后比较新的变化,进入合并的分支。

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

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

谢谢。

4

1 回答 1

0

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

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

因此,这将应用来自两个分支的所有更改。如果双方都进行了相同的更改,则应用它。如果相同的代码以不同的方式更改,那就是冲突,您必须解决它。而且您不会看到它来自哪个特定的修订版,它们都汇总在一起。

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

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

于 2012-06-06T09:25:24.487 回答