【问题标题】:Perforce change-submit trigger to run script on clientPerforce 更改提交触发器以在客户端上运行脚本
【发布时间】:2019-04-08 22:19:51
【问题描述】:

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

我想在客户端对在更改列表中打开的文件启动一系列验证步骤,然后才允许提交更改列表。

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

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

必须在 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 操作以完成验证步骤。但是,我发现的参考资料(尽管是几年前的)表明这是不可能的:

感谢您的阅读并提前为您提供帮助!

【问题讨论】:

  • 不幸的是,这可能是题外话,因为它有点过于宽泛
  • 嘿@DerekPollard!您能否就如何完善我的问题给我一些建议?我可以尝试创建一个 TL;DR 我需要知道是否有人能够做到这一点,或者这是否是 Perforce 触发机制的限制:)

标签: perforce


【解决方案1】:

在客户端计算机上运行任何脚本,特别是在其本地工作区上运行,都需要很可能无法使用的凭据。

这就是它的症结所在——Perforce 服务器不允许向客户端发送任意代码来执行。如果您想要这种类型的功能,您必须在客户端中打出自己的安全漏洞(然后想出自己的方法来确保它不被滥用),听起来您已经走上了这条路并认为这不值得。

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

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

【讨论】:

  • 哈哈是的,开枪,这是最初的计划:为了强制提交通过自定义工具,我们将在 Perforce 服务器上设置一个触发器来检查。所以没有办法使用更改提交触发器运行客户端计算机上已经存在的代码?即更改提交导致脚本在服务器上运行,然后使用 perforce 已经向客户端打开的连接来运行脚本?非常感谢你的指导,山姆!!
  • 我的意思是,总是有办法的。最直接的方法是在每个客户端上设置一个微服务,并确保触发器可以访问它。 (这就是“在客户端打自己的安全漏洞”的方法——任何时候你打开一些新的远程执行方法,你都想仔细考虑一下它可能会如何被滥用......)
猜你喜欢
  • 1970-01-01
  • 2020-12-03
  • 2013-04-09
  • 1970-01-01
  • 2015-09-23
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多