【问题标题】:Perforce line-by-line mergePerforce 逐行合并
【发布时间】:2020-08-17 13:13:49
【问题描述】:

我正在尝试熟悉 P4 以解决合并冲突。让我们假设 User1 和 User2 从主线获得他们的开发流,并且他们都在同一个文件上工作:User1 首先写入“字符串 1”并提交更改并复制到主线。 User2 获取新文件并添加一个新字符串“另一个字符串”。 User2 不提交。 User1 将“string 1”更改为“string 2”并再次提交更改。

User2 尝试提交更改但由于第一行冲突而无法复制到 main。因此,尝试使用 3-way 合并工具进行合并,不要让 User2 逐行选择什么。这是正常的行为吗?唯一的解决方案似乎接受 User2 解决方案并手动编辑第一行以将“1”更改为“2”。我不确定为什么不可能,因为 User2 仍然有旧的“字符串 1”,这与添加的新行无关..

【问题讨论】:

    标签: perforce


    【解决方案1】:

    假设在“字符串 1”之后立即添加了“另一个字符串”,以下是冲突解决的样子(在命令行中):

    >>>> ORIGINAL //depot/merge/same_file.txt#2
    string 1
    ==== THEIRS //depot/merge/same_file.txt#3
    string 2
    ==== YOURS //Samwise-dvcs-1509687817/merge/same_file.txt
    string 1
    another string
    <<<<
    

    用户 1 的更改是“THEIRS”,用户 2(进行合并的人)是“YOURS”。由于更改彼此相邻,因此它们被分组为一个“块”——“字符串 1”不再存在于“THEIRS”分支中,因此对于“字符串 2”的合并算法来说并不明显相对于“另一个字符串”。

    【讨论】:

    • 您的意思是 User2 也可能想要更改第一行,但是如果该行是新行还是之前的行,则无法做出假设,因为原来的第一行不再存在?这是有道理的,但在这种情况下,P4 假设它始终是第一种情况。对我来说,有两个突出的变化,第一行和第二行,不一定必须将它们组合在一起,但也许 P4 以这种方式实现。 SVN 允许您逐行指定要合并的内容。如果更改涉及多个连续的行,那么您必须编辑所有行。
    • Perforce 的默认合并算法在将事物组合在一起形成冲突方面出错,因为这通常是“安全”选项。如果您更喜欢使用更大胆的第三方合并算法,您可以设置P4MERGE。 :)
    猜你喜欢
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    相关资源
    最近更新 更多