如何防止提交空的Perforce更改列表成为错误?

Jos*_*osh 6 perforce build build-server pulse

Perforce认为尝试提交没有文件的更改列表是一个错误(p4 submit ...返回退出代码1).这导致我们的构建服务器上的定期集成构建失败(我们正在使用Zutubi的Pulse系统); 在这种情况下,我宁愿让构建成功,可能会发出警告.

Pulse具有退出代码重映射功能,但Perforce似乎没有消除提交空更改列表失败和任何其他提交失败之间的歧义(这样的验证触发器失败,我确实希望构建失败).

我想到的最明显的(但在我看来,不优雅的)解决方案是将p4 submit批处理文件中的执行包装起来,首先通过计算输出行来检查目标更改列表是否为空p4 opened- 或者只是解析输出的p4 submit为"没有文件"的消息,并从批处理文件成功返回.

是否有更好的处理方法,我没有看到?

rav*_*ven 5

在尝试提交更改列表之前,您可以先尝试删除它.

p4 change -d ###

只有当changelist为空时,此操作才会成功,因此请不要提交(您刚刚删除了它).如果失败,则更改列表中有文件,因此请继续提交.

但是,如果您使用作业,这将不适合您,因为您无法删除附加作业的更改列表,即使它是空的.


Mar*_*ark 2

如果我正确理解你的问题的话,仅使用 Perforce 可能没有好的技术。正如您所看到的,问题在于 perforce 命令行运行的返回代码是不明确的。提交空变更列表真的是一个错误吗?也许,也许不是——可能取决于你问的是谁。

实际上并不建议查看“p4”命令的返回代码。正如您所建议的,最好的选择是解析命令的输出,然后从那里执行您需要的操作。

大多数命令现在支持 -ztag 选项(请参阅“p4 帮助用法”),这将使解析输出变得更容易,具体取决于您想要执行的操作。如果您的情况如此,只需查找输出中的文本,然后决定从那里做什么就足够了。