Git钩子,通过提交后接收循环

时间:2013-06-28 15:15:38

标签: git githooks git-post-receive

在服务器端使用git hooks,是否可以遍历每次有人推送到远程存储库时从客户端发送到服务器的新提交消息?

我需要从每条消息中提取信息,

哈希,日期,提交作者,分支

我无法找到关于git hooks的任何好文档。 我已经通读了 git post-receive hook that grabs commit messages and posts back to URL

我不明白一行简单的代码

1 个答案:

答案 0 :(得分:3)

正如githooks man page中所解释的,post-receive hook为每个ref获取一行,包含

  

<旧值与GT; SP< new-value> SP< ref-name> LF

其中< old-value>是存储在ref中的旧对象名称,< new-value>是要存储在ref和< ref-name>中的新对象名称。是ref的全名。

所以,如果你把它放在.git/hooks/post-receive

#!/bin/sh
while read oldvalue newvalue refname
do
   git log -1 --format='%H,%cd,%an' $newvalue
   git branch --contains $newvalue | cut -d' ' -f2
done

while语句使其循环遍历每一行,将该行中的三个字段读入变量$oldvalue$newvalue$refname

git log行会将hash,date,commit author输出到标准输出。

git branchtry to output the branch。 (或者,您可以使用echo $refname,它将以refs/heads/master)格式输出