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

Perforce更改提交触发器以在客户端上运行脚本,perforce,Perforce,我想在发布之后,我会在这里发布,因为我想从以前可能遇到过这种情况的软件开发人员那里获取信息 在允许提交变更列表之前,我想在客户端对在变更列表中打开的文件启动一系列验证步骤 例如,我希望确保,如果文件作为变更列表的一部分打开以进行添加、编辑或删除,则将根据相应文件的条件矩阵适当处理特定的相关文件: 为添加/编辑/删除而打开的相应文件 磁盘上存在与磁盘上不存在对应的文件 车辆段中存在与车辆段中不存在的相应文件 相对于仓库文件,相应文件已更改与未更改 这些验证步骤必须在Perforce serve

我想在发布之后,我会在这里发布,因为我想从以前可能遇到过这种情况的软件开发人员那里获取信息

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

例如,我希望确保,如果文件作为变更列表的一部分打开以进行添加、编辑或删除,则将根据相应文件的条件矩阵适当处理特定的相关文件:

  • 为添加/编辑/删除而打开的相应文件
  • 磁盘上存在与磁盘上不存在对应的文件
  • 车辆段中存在与车辆段中不存在的相应文件
  • 相对于仓库文件,相应文件已更改与未更改
这些验证步骤必须在Perforce server接受提交之前启动。此外,验证必须在客户端执行,因为我必须能够处理客户端磁盘上的副本

环境:

  • Performce 2017.2服务器
  • MacOS和Windows计算机提交到不同的分支
已经涵盖的调查渠道

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

  • 在其他方法中,我考虑;但是,即使我对服务器上所有可用的变更列表文件使用触发器,我也无法正确执行验证和修正步骤

  • 另一种可能是使用和来获取客户端的IP、主机名、客户端的当前工作目录等,以便您可以在服务器上运行脚本,尝试远程连接到客户端的计算机。但是,在客户端计算机上运行任何脚本,特别是在其本地工作区上操作,都需要凭据,而这些凭据很可能不可用

我希望在Perforce服务器上使用change submit触发器启动客户端计算机上的脚本/捆绑可执行文件,在其工作区上执行p4操作,以完成验证步骤。然而,我发现的参考资料(尽管是多年前的)表明这是不可能的:

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

在客户端计算机上运行任何脚本,特别是在其本地工作区上操作,都需要凭据,而这些凭据很可能不可用

这是问题的关键——Perforce服务器不允许发送客户端任意代码来执行。如果你想要那种类型的功能,你必须在客户端打上你自己的安全漏洞(然后想出你自己的方法来确保它不会被滥用),听起来你已经走上了这条路,觉得不值得

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


我的建议是从这种方法开始,然后寻找减少摩擦的方法。例如,您可以使用change submit触发器来检测用户是否跳过了自定义工作流(可能是通过让自定义工具在更改描述中放置一个标记,以便触发器进行验证),然后向他们发送一条错误消息,使他们回到正轨,如请运行工具>更改验证程序,或联系wanda@yourdomain.com求救“

不幸的是,这可能是离题的,因为它有点太宽泛了!你能给我一些建议,让我如何改进我的问题吗?我可以尝试创建一个TL;博士,我需要知道是否有人能够做到这一点,或者这是Perforce触发机制的一个限制:)哈哈,是的,开枪,这是最初的计划:为了迫使提交通过自定义工具,我们在Perforce服务器上有一个触发器来检查。因此,无法使用change submit触发器运行客户端计算机上已经存在的代码?i、 e.更改提交导致脚本在服务器上运行,然后服务器使用Performce已经打开的与客户端的连接来运行脚本?非常感谢你的指导,山姆!!我是说,总有办法的。最直接的方法是在每个客户端上设置一个微服务,并确保触发器可以访问它。(这就是“在客户机上戳出你自己的安全漏洞”的方法——每当你打开一些新的远程执行方法时,你都想仔细考虑它可能被误用的原因……)