将参数传递给git post-receive钩子

时间:2016-11-10 19:16:18

标签: git

如上所述https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks,git post-receive hook不接受任何参数。我想将一个/多个参数传递给post-receive脚本。

git push origin <branch_name> <arg1> <arg2> ...

有什么办法吗?

1 个答案:

答案 0 :(得分:3)

否:在大多数情况下,这几乎是不可能的,因为你的Git运行ssh或类似的传输代理,它连接到origin的Git所在的主机,然后激活不同的(与程序调用祖先无关)Git在该机器上,然后运行所有接收处理。出于安全原因,这些传输代理限制了“攻击面积”,清除了侧面信道信息。

这归结为您只能通过在推送的数据中走私它们来提供“参数”。什么被推送 - 即数据 - 是新提交和从这些提交引用的任何对象,以及引用名称(主要是分支和/或标记名称)。

请注意,post-receive挂钩可以采用标记名称,其中标记指向包含参数的独立提交或blob,提取这些参数,然后删除该标记。您仍然需要小心处理许多单个源git push的情况 - 大约在同一时间,提供许多对象和引用,包括多个带有多个参数的标记,导致多个同时的接收后脚本运行。 Git在运行预接收和更新挂钩时锁定自己的更新,但是在释放这些锁之后会运行post-receive挂钩。

相关问题