如上所述https://www.digitalocean.com/community/tutorials/how-to-use-git-hooks-to-automate-development-and-deployment-tasks , git post-receive hook 不接受任何参数。我想将一个/多个参数传递给接收后脚本。
git push origin <branch_name> <arg1> <arg2> ...
有什么办法吗?
最佳答案
否:在大多数情况下这实际上是不可能的,因为您的 Git 运行 ssh
或类似的传输代理,它连接到 origin
的 Git 所在的主机,并在该机器上启动一个不同的(与程序调用祖先无关的)Git,然后运行所有接收处理。出于安全原因,这些传输代理限制“攻击面”,清除旁路信息。
这归结为您只能通过将“参数”走私到推送的数据中来提供“参数”。数据。推送的内容(即数据)是新提交以及从这些提交引用的任何对象,以及引用名称(主要是分支和/或标记名称)。
请注意,接收后 Hook 可以采用标记名称,其中标记指向包含参数的独立提交或 blob,提取这些参数,然后删除该标记。您仍然需要小心处理许多单独的源大约在同一时间进行 git Push 的情况,传递许多对象和引用,包括具有多个参数的多个标签,从而导致多个同时发布-接收脚本运行。 Git 在运行预接收和更新 Hook 时会锁定自身以防止其更新,但后接收 Hook 会在释放这些锁后运行。
关于git - 将参数传递给 git post-receive Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40535342/