在服务器端使用git hooks,是否可以遍历每次有人推送到远程存储库时从客户端发送到服务器的新提交消息?
我需要从每条消息中提取信息,
哈希,日期,提交作者,分支
我无法找到关于git hooks的任何好文档。 我已经通读了 git post-receive hook that grabs commit messages and posts back to URL
我不明白一行简单的代码
答案 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 branch
行try to output the branch。 (或者,您可以使用echo $refname
,它将以refs/heads/master
)格式输出