【问题标题】:How can I partially integrate a file in Perforce?如何在Perforce中部分集成文件?
【发布时间】:2016-12-10 18:38:56
【问题描述】:

我在另一个分支上有一个文件,其中包含我想要集成的更改。但它也包含我还不想集成的其他更改。

如何仅部分集成文件?

我首先像往常一样集成并解析文件,然后我对文件进行了“p4 编辑”以删除我还不想进行的更改。 “p4 opens”表示打开文件进行编辑,所以我认为提交将作为编辑而不是集成提交。我错了!它仍然更新了集成历史!因此,如果我稍后尝试集成其余更改,perforce 会说“所有修订已集成”,解决问题的唯一方法是通过忽略集成历史来进行集成,这很难解决。

下次如何避免这种情况?

编辑:

为了澄清,我的意思是文件的单个修订版中有多个更改,我只想集成其中的一部分。

【问题讨论】:

    标签: perforce


    【解决方案1】:

    (编辑以反映问题是关于部分集成修订,而不是集成文件的单个修订)

    由于修订是 Perforce 元数据中最小的更改原子,因此您将无法记录修订的子集已集成 - 并且由于您不想记录整个修订已集成(从而“忽略”未来集成的其余修订),而不是将其作为集成进行,我将其作为编辑进行:

    p4 edit target
    p4 print -o theirs source#n
    p4 print -o base source#n-1
    p4 merge3 base theirs target > target
    rm base theirs
    (edit target)
    p4 submit
    

    另一种选择是首先打开文件进行集成,然后通过还原(使用 -k 标志保留本地更改)并重新打开以进行编辑来清除解析记录:

    p4 integrate source#n,n target
    p4 resolve
    p4 revert -k target
    p4 edit target
    

    一般来说,如果您对文件进行了多项独立更改,以便您以后可能希望能够独立挑选和/或跟踪它们,那么将它们作为独立更改列表提交就可以了容易得多。搁置可以帮助解决这个问题,如果您只有在做出重大更改后才意识到它作为一系列较小的更改更有意义 - 搁置您的大更改,恢复某些部分,提交较小的更改,然后取消搁置大更改并继续.

    【讨论】:

    • 一个文件的单个更改包含多个块,我只想集成这个单个更改的几个块(单个函数中的更改)。
    • 这有点棘手——我会为修改后的问题做一个新的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2012-11-09
    • 2012-11-04
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多