2011-09-16 104 views
2

我有一個迴應,我正在處理那個沒有任何其他鉤子。如今,具有的console.log起牀到dev多次的尷尬之後,我把下面的pre-commit鉤子:爲什麼Git提交-a(和git add,然後git commit)不會觸發可執行文件pre-commit hook

#!/bin/sh 

count=`git diff | grep -i 'console\.' | wc -l | awk '{print $1}'` 
if [[ "$count" -ge 1 ]]; then 
echo " remove any console statements in javascript sources" 
    exit 1 
fi 

本身的腳本工作正常,只要Git會調用它我使用'git commit filename'。如果我通過'git add'添加文件,或者如果我'git commit -a'(我假設只是添加了所有修改後的文件,然後運行提交),它不會觸發。這是爲什麼發生?我不是git master,我在Google上做了一些狩獵,但沒有提出任何具體的東西。

回答

1

每次在您的倉庫中進行提交時,預提交鉤子將被觸發/執行。它與您的文件如何添加到索引無關。我認爲你在解僱和劇本之間做你想做的事。添加外部條件的echo以查看腳本是否始終被觸發。

我還沒有試過,你已經張貼了劇本,但我相信這個問題可能在git diff - 它應該是git diff --cached

更新:

我已經證實,你必須使用--cached

+0

就是這樣。也許我剛剛在早上開始編程太早;) – Stephen

相關問題