整合Perforce的add和edit文件操作

时间:2019-05-30 07:40:09

标签: automation perforce staging

要自动执行Perforce分阶段,我面临一个难题,addedit是两个不同的操作,它们可用于具有不同SCM状态的文件,即“是否已在SCM下”。 >

这与git一致(add分期)不同。

我想要类似伪代码的东西:

filepath = '/path/to/myfile.ext'
if p4.is_under_scm(filepath):
    p4.edit(filepath)
else:
    p4.add(filepath)

或更妙的是,只需使用以下方法隐藏细节:

p4.staging(filepath)

如何通过调用p4命令行程序来实现此目的?我现在不使用任何编程语言绑定。

1 个答案:

答案 0 :(得分:2)

您可能想使用p4 reconcile命令,该命令会自动打开工作空间文件以执行与其相对于软件仓库的当前状态相匹配的操作。

请记住,如果您采用这种方式,reconcile仅对与软件版本版本不同未打开文件起作用,因此应使用 之后进行本地修改(这与标准工作流程不同,在标准工作流程中,您在编辑之前先使用p4 edit打开文件,其想法是使用reconcile来修复问题之后,如果您不得不断开工作或进行类似操作)。此外,如果您改变了对文件的处理方式(例如,在为edit打开文件之后但在submit之前删除了本地副本),则可能需要{{ 1}},然后重新revert -k以确保它已打开以执行正确的操作。

对于与您的问题中的伪代码匹配的内容,您可能需要reconcile命令,该命令告诉您本地文件是否对应于软件仓库修订版(如果是,则是哪个版本)。 p4 have仅适用于您p4 edit的文件,而have适用于您工作区中与现有软件仓库文件不对应的文件。 (这里有一个很微妙的地方-即使未从软件仓库同步文件,也有可能将文件映射到库文件!如果是这种情况,在您提交时会遇到冲突您的p4 add。)