如何在命令行中自动解决 Perforce 冲突?

15

P4V在我尝试解决大量文件进行集成时出现了问题。我想在命令行中完成这个操作。

以下是P4V的步骤:

  1. 右键单击CL。
  2. 选择“解决文件…”,会出现一个对话框。
  3. 选择“如果没有冲突存在,则合并您和他们的文件”。
  4. 点击Auto。

有人可以将其翻译成带有正确参数的p4命令行命令吗?

3个回答

15

您可以使用p4 resolve -am [file ...]命令,此命令将跳过具有冲突的文件。

如果指定一个文件,则只处理该文件。 如果指定...,则会处理工作目录下的所有文件。 如果不指定文件,则会处理工作区中的所有文件。


无法使用resolve命令为文件指定待处理CL吗? - Fostah
4
不,似乎不是这样。一种选项是在批处理中使用 for 循环来对其进行封装,从命令行获取 changelist 并迭代通过 p4 describe changelist# 返回的文件,将它们传递给 p4 resolve -am - akf
1
我宁愿使用 p4 resolve -as。因为它只在安全的情况下解决冲突。-am 选项也会合并,这可能会导致合并错误,我宁愿在 p4merge 中手动处理。 - Calmarius
有没有一种方法可以在实际冲突时打开P4 UI,就像没有-am选项一样?我想将这个工具与我的git工作流程集成。目前,如果P4认为没有冲突,我必须关闭-保存所有冲突。但是,如果我指定了-am,这意味着在冲突的情况下我也看不到任何UI... - Dmitry Gusarov

11

我声望不够,不能在已接受答案下添加评论,所以我会在一个新的回答中添加信息。

使用Perforce 2013.2,您确实可以提供变更列表号以限制操作仅限于该变更列表中的文件。

p4 resolve -c changelist#

1

我按照以下步骤在命令行中执行:

  1. 在Perforce客户端中,选择工作区中的文件夹。
  2. 选择 文件 -> 在此处打开终端窗口。终端将在步骤1中选择的同一目录中打开。
  3. 使用选项 -n 执行试运行

p4 resolve -c 1234 -n

  1. 使用选项-am接受来自Perforce的自动合并,自动模式。自动接受推荐的文件修订版:如果theirs与基础版本相同,则接受yours;如果yours与基础版本相同,则接受theirs;如果yours和theirs与基础版本不同,并且它们之间没有冲突,则接受合并;否则,yours和theirs之间存在冲突,因此跳过此文件。

p4 resolve -c 1234 -am


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接