鉤子在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發送郵件。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章