我想从pre-receive hook
创建pre-push hook
。现在,环顾网络和SO,我发现很多与特定问题有关的问题,和/或专注于钩子的描述,而不是实际显示它(我看着你, GIT-SCM)。
所以无论如何,据我所知,pre-receive hook
被称为无参数。那我如何获取数据呢?有很多数据我会发现自己想要抓住这样的钩子,例如:
但老实说我不知道如何获取数据 - 我知道人们会这样做,因为我已经看到了这样的脚本。
我想假设它bash
- 可行,因为配置越少越好,amirite?
答案 0 :(得分:1)
记录在案,见https://git-scm.com/docs/githooks#pre-receive:
此挂钩执行一次以进行接收操作。它不需要 参数,但对于每个ref都要更新它接收标准 输入以下格式的行:
<old-value> SP <new-value> SP <ref-name> LF
其中
<old-value>
是存储在ref中的旧对象名称,<new-value>
是要存储在ref和中的新对象名<ref-name>
是引用的全名。在创建新的参考时,<old-value>
是40 0。
请注意,您可以接收多个分支的更新。当您在bash中编写预接收挂钩时,可以从:
开始while read old new ref; do
# do something with each $old $new $ref
done
$ref
将是全名,例如refs/heads/my-branch
。 $old
和$new
是提交对象的SHA-1名称。
要获取提交消息,作者等,您可以使用$old
和$new
调用git命令,例如git log $old..$new
(请注意,可能会有多个新提交被推送在一个分支上。)
答案 1 :(得分:1)
你需要从stdin读取。每行都为您提供旧参考,新参考和参考名称。可以在Git pre-receive hook找到一个起始示例。