为什么"源"版本在Perforce合并时具有如此重要的意义(解决冲突是冗长的)?

Cha*_*ani 3 version-control perforce

我认为我甚至不想看到它.为什么其他人认为它如此重要?

在此输入图像描述

不是Base,Target足以解决"解决冲突",即Merge工具窗口.我错过了什么?在Base,即Source之前,人们真的对这个版本感到困扰吗?

Kar*_*ldt 8

看起来你对每个版本的含义都存在根本的误解.合并两个分支时,几乎总是要保留两个分支的更改. Base是两个分支的最新共同祖先. Base->Source显示您正在合并的分支中的更改内容,并Base->Target显示您要合并的分支中的更改内容.要正确解决冲突,您需要知道每个分支中的更改内容.


小智 6

p4 文档中 p4merge 的一些文档 - 合并文件

处理合并冲突时,有四个部分:

  1. 两个分支都改变的共同祖先
  2. 他们的变化(来源)
  3. 您的改变(目标)
  4. 最终结果

p4合并结果

(您可能有旧版本的 p4merge - 文档显示了不同的措辞,可以消除混乱)

“源”不是之前的修订,而是其他人所做的合并中的传入更改。

忽略您的更改或他们的更改是一种可能的冲突解决方案 - 许多人将其作为默认的“合并,使用我的来处理冲突”。然而,这很可能导致其他分支引入的功能回归(或更糟糕的是,删除其他分支期望的代码)。

对于给定的有冲突的代码块,您的更改它们的更改都很重要,两者的祖先为更改内容提供了适当的上下文。

  • 谢谢。我特别困惑的原因之一是,现在我正在将更改从我自己的*开发分支*合并到*生产分支*。因此,这项工作对我来说似乎是一维的 - 即只有一个分支(其中存在我的更改的开发人员分支),我必须将该分支的更改合并到生产分支。但我无法理解的是,在合并的一般场景中,其他人可能会对生产分支进行其他更改。原因是我是该模块中唯一的开发人员。感谢您清理一切 (2认同)