如何在客户端结账时使用 p4 触发器?

时间:2021-05-26 09:48:09

标签: perforce

查看 p4 trigger 文档时,我找不到客户端锁定(检出)和解锁(还原)文件的触发器。是否有类似 change-content 触发器但处于上述阶段的任何东西?

我的目标是使用 webhook 设置客户端活动的通知。我还查看了 p4review.py,它看起来也没有在退房/登记时触发。提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以通过 pre/post-user-<command> 触发器对任意命令运行触发器:

https://www.perforce.com/manuals/v16.2/p4sag/chapter.scripting.html#scripting.triggers.order

请注意,这些是在单个命令级别(例如 p4 lockp4 revert)而不是在特定文件操作级别(例如 锁定文件解锁文件),因此使用命令触发器捕获文件状态的特定更改并不像使用提交触发器捕获提交那么简单。

锁定文件(它是打开或“签出”文件的子集)的具体示例为例,文件可能被锁定 什么时候:

  • 用户运行 p4 lock(显式锁定打开的文件)
  • 用户运行 p4 submit(在开始时自动锁定文件)

文件可能在以下情况下解锁

  • 用户运行 p4 unlock(解锁文件但保持打开状态)
  • 用户运行 p4 revert
  • 用户运行 p4 submit(提交成功后解锁文件)

还有“独占打开”(+l) 文件需要考虑,它们构成了不同类型的锁(防止其他打开而不是其他提交)。

另一种完全检测文件锁定状态变化的策略可能是抓取日志文件以更新 db.locks 表。跟踪日志比设置触发器要复杂一些,并且需要您对 Perforce 的数据库架构有深入的了解,但是如果您能够清除这些障碍,它的优点是可以为您提供单一的事实来源监控而不必对一堆不同的命令进行逆向工程。