要自动执行Perforce分阶段,我面临一个难题,add
和edit
是两个不同的操作,它们可用于具有不同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
命令行程序来实现此目的?我现在不使用任何编程语言绑定。
答案 0 :(得分:2)
您可能想使用p4 reconcile
命令,该命令会自动打开工作空间文件以执行与其相对于软件仓库的当前状态相匹配的操作。
请记住,如果您采用这种方式,reconcile
仅对与软件版本版本不同的未打开文件起作用,因此应使用 之后进行本地修改(这与标准工作流程不同,在标准工作流程中,您在编辑之前先使用p4 edit
打开文件,其想法是使用reconcile
来修复问题之后,如果您不得不断开工作或进行类似操作)。此外,如果您改变了对文件的处理方式(例如,在为edit
打开文件之后但在submit
之前删除了本地副本),则可能需要{{ 1}},然后重新revert -k
以确保它已打开以执行正确的操作。
对于与您的问题中的伪代码匹配的内容,您可能需要reconcile
命令,该命令告诉您本地文件是否对应于软件仓库修订版(如果是,则是哪个版本)。 p4 have
仅适用于您p4 edit
的文件,而have
适用于您工作区中与现有软件仓库文件不对应的文件。 (这里有一个很微妙的地方-即使未从软件仓库同步文件,也有可能将文件映射到库文件!如果是这种情况,在您提交时会遇到冲突您的p4 add
。)