Perforce更改提交触发器可在客户端上运行脚本

时间:2019-04-08 22:19:52

标签: perforce

我想在SuperUser上发布之后,我会在这里发布,因为我想从以前可能遇到过这种情况的软件开发人员那里获得输入!

在允许提交更改列表之前,我想在 客户端 上针对在更改列表内打开的文件启动一系列验证步骤。

例如,我希望确保如果打开一个文件以作为更改列表的一部分进行添加,编辑或删除,则将根据相应文件的条件矩阵适当对待特定的相关文件:< / p>

  • 正在打开相应文件以进行添加/编辑/删除
  • 磁盘上对应的文件与磁盘上不存在的文件
  • 仓库中对应的文件与仓库中不存在的文件
  • 相对于软件仓库文件,对应文件已更改与未更改

这些验证步骤必须在Perforce服务器接受提交之前启动。此外,由于我必须能够reconcile offline work使用客户端磁盘上的副本,因此必须在客户端进行验证。

环境:

  • Perforce 2017.2服务器
  • MacOS和Windows计算机提交到不同的分支机构

已涵盖调查大街

  • 最初的设计严格是客户端custom tool,但这并不理想,因为这将改变用户熟悉的流程,并且我还必须实现自定义GUI

  • 在其他方法中,我考虑了creating triggers in 2017.2;但是,即使我将change-content触发器与服务器上所有可用的变更列表文件一起使用,我也将无法正确执行验证和补救步骤。

  • 另一种可能性是使用change-submit trigger并使用trigger script variables in 2017.2获取客户端的IP,主机名,客户端的当前工作目录等,以便您可以在服务器尝试远程连接到客户端计算机。但是,在客户端计算机上运行任何脚本,特别是在其本地工作空间上运行,将需要凭据,而凭据很可能将不可用。

我很想在Perforce服务器上使用提交更改触发器来启动客户端计算机上的脚本/捆绑可执行文件,以在其工作空间上执行p4操作以完成验证步骤。但是,我发现的参考文献(尽管是几年前的)表明这是不可能的:

感谢您的阅读,并提前获得您的帮助!

1 个答案:

答案 0 :(得分:2)

  

在客户端计算机上运行任何脚本,尤其是在其本地工作空间上运行,将需要凭据,而这些凭据很可能将不可用。

这是关键所在–不允许Perforce服务器发送客户端任意代码来执行。如果您需要那种功能,则必须在客户端上打个安全漏洞(然后想出自己的方式来确保它不会被滥用),听起来您已经走了这条路。并认为这不值得。

  

初始设计是严格的客户端自定义工具,但这并不理想,因为这将改变用户熟悉的流程,并且我还必须实现自定义GUI。

我的建议是从这种方法开始,然后寻找减少摩擦的方法。例如,您可以使用提交更改的触发器来检测用户是否跳过了自定义工作流程(也许通过使自定义工具在更改描述中放置令牌以使触发器得以验证),然后向他们发送一条错误消息,该触发器将他们回到正轨,例如“请运行工具>更改验证器,或联系wanda@yourdomain.com寻求帮助”