python - 如何从表单输入触发器中获取流创建表单中的 'Branch files on creation' 值?

标签 python triggers perforce jetbrains-ide p4v

我正在 Helix Core 服务器上设置一个 Perforce 触发器,当用户提交要创建流的表单时,该触发器会在流创建表单上触发。我想验证用户选择的流的名称。如果用户决定不选择“在流创建时从父级分支文件”设置,我还想警告用户。

Stream creation form example

到目前为止,我已经设置了可以运行的触发器,并且当前可以验证流名称。但是,我无法找到一种方法来获取“分支文件...”设置复选框的 bool 值。

触发线:

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 (即检查流的类型及其路径,等待至少几秒钟以便有时间进行 p4 populate,然后查看是否存在应该存在但尚未存在的仓库文件),然后可能会向用户发送一封后续电子邮件,让他们知道他们尚未填充流(以下是操作方法)。

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

关于python - 如何从表单输入触发器中获取流创建表单中的 'Branch files on creation' 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57706919/

相关文章:

mysql - 查询数学运算与在 mysql 数据库中的固定列上使用更新触发器

mysql - 为什么相反的操作 <> 对触发器不起作用?

python - 如何在 PyQGIS 中获取 shapefile 几何类型?

triggers - 如何为中继器控件内的控件设置更新面板触发器?

python - Netcat 断开连接时自动重新连接

perforce - p4 提交中止错误 - 如何解决

c++ - VS2010不理解自己文件的字符串编码

Perforce:查找具有给定来源的分支

python - 列表的 boolean 掩码作为 Pandas 数据框中的条目

python - 在 python 扩展中操作来自 SWIG 的共享指针