如何从表单触发器中获取 Stream 创建表单中 'Branch files on creation' 值的值?

How do I get the value of the 'Branch files on creation' value in the Stream creation form from a form-in trigger?

我正在 Helix 核心服务器上设置一个 Perforce 触发器,当用户提交要创建的流的表单时,它会在流创建表单上触发。我想验证用户 selected 的流的名称。如果用户决定不 select 'Branch files from parent on stream creation' 设置,我也想警告他们。

Stream creation form example

到目前为止,我已经设置了有效的触发器,目前可以验证流名称。但是我无法找到一种方法来获取 'Branch files...' 设置复选框的布尔值。

触发线:

check-stream-name form-save stream "python /p4/common/bin/triggers/check_stream_name_trigger.py %formfile%"

我通过在触发时获取 'formfile' 变量来获取所有表单字段,这为我提供了一个临时文件名,我可以读取该文件名并获取表单上大部分字段的值。但是 'Branch files...' 字段值未显示。

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 ...

如何获取触发器中 'Branch files...' 复选框的值?

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

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

或者,您可以让 form-commit 触发 运行 populate(假设您想要 始终 使用其父级的主要修订版——尽管这实际上可能不是您想要全面实施的内容,因为创建基于早期修订版的流可能很有用。