钩子在git服务器端的配置

post-receive介绍

post-receive钩子在客户端完成push动作之后被触发,它只执行一次,且不接受参数。它会接收一个标准输入,包含3个参数:

<old-value> SP <new-value> SP <ref-name> LF

SP是空格,LF是换行符,old-value表示上一个提交的SHA1码,new-value是指这一次提交的SHA1码,ref-name是分支的全称,例如:

refs/heads/master

了解了这个标准输入的内容后,就可以利用post-receive钩子来实现当有用户提交到git服务器时,用邮件通知其它用户这个git仓库有提交,或者用来做持续集成。

实现post-receive的shell脚本

#!/bin/bash

#echo -e "Hi all\n$branch branch has update\nBR\nBarry" | mail -s "$branch update" [email protected]
#branch=$(git symbolic-ref --short HEAD)
while read mes mes ref  //读取post-receive输入流中的3个参数
do
   branch=$(echo $ref | awk -F '/' '{print $3}')
   git checkout -b $branch
done
author=$(git log -1 | grep Author | awk -F ':' '{print $2}' | awk -F '<' '{print $1}' | sed 's/ //g')
content=$(git log -1)


if [ $author=="barry" ];then
   #curl --user aaa:123456 -s http://10.216.17.20:8080/job/k226daily/build?token=123456
   echo -e "Hi all\n$author has update in branch $branch\n $content\n\n\nBR\nBarry" | mail -s "$branch update" [email protected]
fi
这样当有一个叫barry的用户提交代码以后,git服务器端将会自动发邮件给需要的用户,可以实时获取git服务器状态。当然,这需要git服务器端支持sendmail发送邮件。



猜你喜欢

转载自blog.csdn.net/a420344/article/details/78712454
今日推荐