如何在Perforce中部分集成文件?

时间:2016-08-04 14:51:53

标签: perforce

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

如何仅部分整合文件?

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

下次如何避免这种情况?

编辑:

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

1 个答案:

答案 0 :(得分: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

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