python - 如何从表单输入触发器中获取流创建表单中的“创建时分支文件”值的值?
问题描述
我正在 Helix Core 服务器上设置 Perforce 触发器,当用户提交要创建的流的表单时,该触发器在流创建表单上触发。我想验证用户选择的流的名称。如果用户决定不选择“在流创建时从父级分支文件”设置,我还想警告用户。
到目前为止,我已经设置了可以工作并且当前可以验证流名称的触发器。但是,我无法找到获取“分支文件...”设置复选框的布尔值的方法。
触发线:
check-stream-name form-save stream "python /p4/common/bin/triggers/check_stream_name_trigger.py %formfile%"
当触发器被触发时,我通过抓取“formfile”变量来获取所有表单字段,这给了我一个临时文件名,我可以读取并获取表单上大多数字段的值。但未显示“分支文件...”字段值。
Stream: //TestDepot/devs/TestStream_dev
Update:
Access:
Owner: me
Name: TestStream_dev
Parent: //TestDepot/Mainlines/ShortStream
Type: development
Description:
Created by me.
Options: allsubmit unlocked toparent fromparent mergedown
Paths:
share ...
如何获取触发器中“分支文件...”复选框的值?
解决方案
你不能,因为这个值不是服务器上实际流规范的一部分。当您在 P4V UI 中选中该框时,它将p4 populate
在保存规范后立即运行该命令(在您的表单触发器运行之后)。在执行该命令之前,服务器对它一无所知。
不幸的是,很难触发没有发生的事情,特别是如果你试图触发它在未来不会发生。一个有点复杂的解决方案可能是form-commit
在流上触发延迟检查以查看流创建是否紧随其后populate
(即检查流的类型及其路径,至少等待几秒钟以留出时间对于 a p4 populate
,然后查看是否存在应该存在但尚未存在的 depot 文件),然后可能会向用户发送一封后续电子邮件,让他们知道他们尚未填充流(以及如何执行此操作)。
或者,您可以让该form-commit
触发器运行populate
(假设您希望始终使用其父级的头部修订填充一个流 - 这实际上可能不是您想要全面执行的东西,因为它可能很有用创建基于早期版本的流)。
推荐阅读
- python - 如何使用动态参数输入调用函数
- c++ - 使 QWebsocket 成为 QDataStream 的 QIODevice
- c - 如何将字符数组的元素复制到字符?
- c# - 如何在 CollectionView(水平)中直观地使我的选定项目显示在我的屏幕中心?
- python - 当我使用 Tensorflow 对不平衡数据的 CNN 应用类权重时,内核死亡
- javascript - Javascript 中的 Murmur3_128
- reactjs - 材质 UI 范围滑块总和 100
- c# - 为什么在使用块和对象初始化程序的情况下不调用 Dispose
- git - 错误:在 Jenkins 管道上获取远程 repo 'origin' 时出错
- python - 从 urls.py 连接 Django .html