git - 将参数传递给 git post-receive Hook

标签 git

如上所述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/

相关文章:

git-flow 给出错误 : An item with the same key has already been added

git 。如何查看 HEAD 之后的修订版本?

git - 如何为 pull 请求设置默认 fork ?

git - 自动构建 .mailmap 文件的工具

git - 从 git 空白检查中排除 Jest 快照

git - 如何以管理员身份登录 Gerrit

git - 获取冲突线/范围

git - 如何获取子文件夹的git路径?

git - 限制 git 分支数量

git - 目录在 github 上显示为灰色文件夹,但未跟踪其内容。为什么?