首页 > 解决方案 > 如何在客户端结帐时使用 p4 触发器?

问题描述

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

我的目标是使用 webhook 设置客户端活动的通知。我还查看了 p4review.py ,它看起来也不会在签出/签入时触发。在此先感谢。

标签: perforce

解决方案


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

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

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

锁定文件(这是打开或“签出”文件的子集)为例,文件可能在以下情况下被锁定

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

在以下情况下,文件可能会被解锁

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

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

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


推荐阅读