2011-09-07 88 views
32

我正在執行一個程序來在每次將更新發送到遠程存儲庫時警告CruiseControl。我爲此使用了Git post-update鉤子。在更新後的鉤子中查找Git分支名稱

如果我能找出哪個分支已經被提交,那麼我就可以使用它來通知CruiseControl要建立哪個分支。有沒有辦法在更新後的鉤子中訪問分支名稱?

回答

43

更新後掛鉤的第一個參數是完整的分支引用 - 例如,我看到'refs/heads/master'用於推送到'origin master'。這樣一個示例鉤子腳本只是打印分支改性是:

#!/bin/sh 
branch=$(git rev-parse --symbolic --abbrev-ref $1) 
echo Update pushed to branch $branch 
exec git update-server-info 

爲了說明,當上述被放置到您的遠程存儲庫鉤/更新後的文件執行推送當打印以下

% git push origin master 
Counting objects: 5, done 
Writing objects: 100% (3/3), 247 bytes, done. 
Total 3 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (3/3), done. 
remote: Update pushed to branch master 
To /tmp/xx/a 
    e02d9cd..ab14a08 master -> master 

我們的鉤子腳本輸出了開始'remote:'的新行。

+0

謝謝Patthoyts。使用上面的代碼,我得到「遠程:鉤子/後更新:第8行:分支:命令未找到」。錨 – user489998

+0

我提供了一個擴展樣本。你仍然需要#!/ bin/sh行。另外,當你在shell腳本中設置一個變量時,使用$來訪問價值 – patthoyts

+0

Wayhey!這是做到了。非常感謝patthoyts。 – user489998