我一直在查看各种 StackExchange 帖子、Perforce 论坛条目等,以寻找以下问题的解决方案,并非常感谢您的指导和经验!
问题描述
我希望能够发起从Perforce 服务器上的一系列验证步骤客户端在允许提交变更列表之前,对变更列表中打开的文件进行检查。
例如,我希望确保如果打开一个文件进行添加、编辑或删除作为变更列表的一部分,则特定的相关文件将根据相应文件的条件矩阵进行适当处理:
- 正在打开相应文件以进行添加/编辑/删除
- 相应文件在磁盘上存在与不在磁盘上存在
- 对应文件存在于仓库中与不存在于仓库中
- 相对于仓库文件,相应文件已被更改或未更改
这些验证步骤必须在 Perforce 服务器接受提交之前启动。此外,验证必须在客户端执行,因为我必须能够协调离线工作并将其副本保存在客户端磁盘上。
成分
- Perforce 2017.2 服务器
- MacOS 和 Windows 计算机提交到不同的分支
初步尝试
最初的设计是严格的客户端自定义工具,但这并不理想,因为这会改变用户熟悉的流程,而且我还必须实现自定义 GUI。
在其他方法中,我考虑过在 2017.2 中创建触发器;然而,即使我使用更改内容触发服务器上所有可用的变更列表文件,我将无法正确执行验证和补救步骤。
另一种可能性是使用变更提交触发器并使用2017.2 中的触发脚本变量获取客户端的 IP、主机名、客户端的当前工作目录等,以便您可以在服务器上运行脚本,尝试远程连接到客户端的计算机。但是,在客户端的计算机上运行任何脚本,特别是在其本地工作区上操作都需要凭证,而这些凭证很可能无法获得。
期望方法
我很想在 Perforce 服务器上使用更改提交触发器来启动客户端计算机上的脚本/捆绑可执行文件,以在其工作区上执行 p4 操作来完成验证步骤。但是,我发现的参考资料(尽管是几年前的)表明这是不可能的:
- https://stackoverflow.com/a/16061840
- https://perforce-user.perforce.narkive.com/rkYjcQ69/p4-client-side-submit-triggers
- https://stackoverflow.com/questions/24150792/updating-files-with-a-perforce-trigger-before-submit
再次感谢您的阅读和帮助!
编辑:我发帖于堆栈溢出看看我能否从更广泛的受众那里获得一些见解:D