首页 > 解决方案 > 如何从表单输入触发器中获取流创建表单中的“创建时分支文件”值的值?

问题描述

我正在 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 ...

如何获取触发器中“分支文件...”复选框的值?

标签: pythontriggersperforcejetbrains-idep4v

解决方案


你不能,因为这个值不是服务器上实际流规范的一部分。当您在 P4V UI 中选中该框时,它将p4 populate在保存规范后立即运行该命令(在您的表单触发器运行之后)。在执行该命令之前,服务器对它一无所知。

不幸的是,很难触发没有发生的事情,特别是如果你试图触发它在未来不会发生。一个有点复杂的解决方案可能是form-commit在流上触发延迟检查以查看流创建是否紧随其后populate(即检查流的类型及其路径,至少等待几秒钟以留出时间对于 a p4 populate,然后查看是否存在应该存在但尚未存在的 depot 文件),然后可能会向用户发送一封后续电子邮件,让他们知道他们尚未填充流(以及如何执行此操作)。

或者,您可以让该form-commit触发器运行populate(假设您希望始终使用其父级的头部修订填充一个流 - 这实际上可能不是您想要全面执行的东西,因为它可能很有用创建基于早期版本的流)。


推荐阅读