perforce - 如何在客户端结帐时使用 p4 触发器?
问题描述
查看p4 触发器文档时,我找不到客户端锁定(签出)和解锁(还原)文件的触发器。是否有任何类似于change-content
触发器但处于上述阶段的东西?
我的目标是使用 webhook 设置客户端活动的通知。我还查看了 p4review.py ,它看起来也不会在签出/签入时触发。在此先感谢。
解决方案
您可以通过触发器对任意命令运行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 的数据库模式有深入的了解,但是如果您能够清除这些障碍,它的优势在于为您提供单一的事实来源监控,而不必对一堆不同的命令进行逆向工程。
推荐阅读
- python - 如何更改数组的元素索引?
- javascript - 加载 youtube 视频时打开网站
- django - 我在序列化程序中丢失了数据(django/angular)
- intellij-plugin - 在 IntelliJ 插件中传送特定于操作系统的二进制文件
- regex - Python正则表达式解析跨越多行的sudoers日志内容
- r - 来自“R 中的贝叶斯网络”一书的 gs (bnlearn) 输出的再现性
- watchkit - 如何在 watchOS6 中更改 rootInterfaceController
- c# - 如何在 Microsoft Fakes 上的通用列表上有效地绑定 IEnumerable 接口
- python-3.x - 为什么我无法使用 mechanize 登录 otter.ai
- c# - 连接到远程数据库