Automation 整合Performance“添加”和“编辑”文件操作

Automation 整合Performance“添加”和“编辑”文件操作,automation,perforce,staging,Automation,Perforce,Staging,为了使Performe staging自动化,我面临一个两难境地,add和edit是两个不同的操作,它们处理不同SCM状态的文件,即“是否已在SCM下” 这与git不同,在git中,staging是统一的add 我想要一些类似伪代码的东西: filepath = '/path/to/myfile.ext' if p4.is_under_scm(filepath): p4.edit(filepath) else: p4.add(filepath) 或者更好的是,只需通过以下方式隐

为了使Performe staging自动化,我面临一个两难境地,
add
edit
是两个不同的操作,它们处理不同SCM状态的文件,即“是否已在SCM下”

这与git不同,在git中,staging是统一的
add

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

filepath = '/path/to/myfile.ext'
if p4.is_under_scm(filepath):
    p4.edit(filepath)
else:
    p4.add(filepath)
或者更好的是,只需通过以下方式隐藏细节:

p4.staging(filepath)

我应该如何通过调用
p4
命令行程序来实现这一点?。我现在没有使用任何编程语言绑定。

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

请记住,如果您走这条路线,则
协调
仅对与depot版本不同的未打开文件进行操作,因此它是在进行本地修改后使用的(这与标准工作流不同,在标准工作流中,您在编辑文件之前使用
p4 edit
打开文件,其思想是,如果您必须断开连接或类似操作,您可以在事后使用
协调
来修复问题)。此外,如果您改变了对文件的处理方式的想法(例如,在本地副本被打开进行编辑之后,但在您提交之前,您删除了本地副本),您可能需要将其还原为k,然后重新进行核对,以确保其已被打开,以便执行正确的操作


对于与问题中的伪代码匹配的内容,您可能希望使用
p4 have
命令,该命令告诉您本地文件是否对应于仓库版本(如果是,则是哪个版本).
p4 edit
仅适用于
拥有的文件,而
p4 add
适用于工作区中与现有仓库文件不对应的文件。(这里有一个非常微妙的点——尽管没有从仓库同步,但文件仍有可能映射到仓库文件!如果是这种情况,则在提交
添加
时会发生冲突)

非常感谢您提供的信息。我确实尝试过在编辑之前使用“协调”,但没有发现任何打开的内容可供添加/编辑。现在一切都有了意义。这一差异增加了跨SCM抽象的工作!我希望有一个关于git工作流的Performce克隆的伟大教程,供像我这样的Performce用户使用(上一次使用是在10年前,仅限于p4v/p4win,没有p4 CLI经验)。Git和Performce工作流并不完全具有1:1的映射,但是如果您认为
p4 reconcile
+
p4 submit
Git commit-a
相同,那么reconcile命令可以帮助您实现这一点。