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

How to use p4 trigger on client checkout?

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

我的目标是使用 webhook 设置客户端活动的通知。我也调查了 p4review.py,它看起来也不像在检查 out/check 时触发。提前致谢。

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

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

请注意,这些是在单个命令级别执行的(例如 p4 lockp4 revert),而不是在特定文件操作级别(例如 锁定文件 or unlocking a file), 所以使用command triggers来捕获文件状态的特定变化并不像使用submit trigger来捕获submits那么简单

锁定 文件为例(这是 打开 或“签出”文件的子集),文件可能 锁定 时:

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

文件可能 解锁 时间:

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

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

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