2009-06-18 97 views

回答

26

如果這些鉤子的人會不會做,我會很驚訝

http://schacon.github.com/git/githooks.html

也許這一個:

結賬後

這個鉤子被調用時, git-checkout在 更新工作樹之後運行。鉤 給出三個參數: 先前HEAD的裁判,新HEAD (其可以或可以不改變)的裁判, 和一個標誌,它指示 結帳是否是分支結帳 (改變分支,flag = 1)或文件 簽出(從 索引中檢索文件,flag = 0)。這個鉤子不能 影響git-checkout的結果。

23

一個Git鉤子放在你的倉庫的特殊位置的腳本,該位置是:

的.git /掛鉤

該腳本可以是任何類型的,你可以在您的環境中執行,即bash,python,ruby等。

簽出後執行的掛鉤爲post-checkout。從文檔:

...鉤子給出三個參數...

例子:

  1. 創建掛鉤(腳本):

    touch .git/hooks/post-checkout 
    chmod u+x .git/hooks/post-checkout 
    
  2. 鉤樣本內容:

#!/bin/bash                  

set -e                   

printf '\npost-checkout hook\n\n'             

prevHEAD=$1                  
newHEAD=$2                  
checkoutType=$3                 

[[ $checkoutType == 1 ]] && checkoutType='branch' ||        
          checkoutType='file' ;         

echo 'Checkout type: '$checkoutType            
echo ' prev HEAD: '`git name-rev --name-only $prevHEAD`      
echo '  new HEAD: '`git name-rev --name-only $newHEAD` 

注意:第一行的家當表明腳本的類型。

這個腳本(git hook)將只捕獲傳遞的三個參數並以人性化的格式打印它們。

+0

你知道有什麼方法可以判斷這是否是分支創建檢出(除了查看新的HEAD的reflog)嗎? – pkoch 2014-01-17 22:55:30

+0

似乎這將是一個好主意,你問一個全新的問題。如果你這樣做,給我鏈接,我會看看我是否可以幫忙。你試圖解決什麼問題? – givanse 2014-01-18 14:16:23

1

post-checkouthook接收三個參數:

  1. 參考先前HEAD的
  2. 新HEAD的
  3. 這是否是一個文件籤(0)或分支結帳(1

您可以使用從當前HEAD創建的分支對參數1和2具有相同值的事實。

cat > .git/hooks/post-checkout <<"EOF" 
if [ "$3" == "0" ]; then exit; fi 
if [ "$1" == "$2" ]; then 
    echo "New branch created. (Probably)." 
fi 
EOF 

chmod u+x .git/hooks/post-checkout 

限制:

  • 檢出的現有分支這恰好是在相同的HEAD作爲當前HEAD會欺騙它。
  • 創建新分支而不是將不會被檢測到。
4

與其他類似,但驗證分支已經簽出一次。

#!/bin/bash 

# this is a file checkout – do nothing 
if [ "$3" == "0" ]; then exit; fi 

BRANCH_NAME=$(git symbolic-ref --short -q HEAD) 
NUM_CHECKOUTS=`git reflog --date=local | grep -o ${BRANCH_NAME} | wc -l` 

#if the refs of the previous and new heads are the same 
#AND the number of checkouts equals one, a new branch has been created 
if [ "$1" == "$2" ] && [ ${NUM_CHECKOUTS} -eq 1 ]; then 
    git push origin ${BRANCH_NAME} 
fi 
相關問題