2012-05-31 99 views
4

我正在嘗試(但失敗),使得git預提交鉤子檢查我的已修改文件中是否存在var_dump,如果找到,就退出。我遇到的問題是它似乎始終放棄提交。這裏是我的預提交文件的內容:當var_dump存在時,終止git預提交鉤子

VAR=$(git diff | grep -w "var_dump") 
if [ -z $VAR ]; then 
    echo "You've left a var_dump in one of your files! Aborting commit..." 
    exit 1 
fi 

回答

8

首先,請注意,普通git diff給工作樹和索引之間的差(即什麼仍然可以上演),也不是什麼要做出承諾。使用git diff --cached來查看即將提交的內容。

我在試驗時遇到的第二件事是使用if [ -z $VAR ]直接拋出一個錯誤,因爲git diff輸出開頭的+被Bash解釋。確保將$VAR用引號括起來以防止出現這種情況。

至於腳本,如果$VAR爲空,則忘記否定測試。如果grep的輸出爲空,那麼找不到「var_dump」,並且鉤子應該返回成功。你想要的情況是:不是空,意思是「var_dump」找到了,它應該放棄提交。

一起:

VAR=$(git diff --cached | grep -w "var_dump") 
if [ ! -z "$VAR" ]; then 
    echo "You've left a var_dump in one of your files! Aborting commit..." 
    exit 1 
fi 
+0

真棒!謝謝您的幫助。 –

+2

@KyleDecot沒問題。 :D我在這個網站上的第一個實際答案!研究很有趣,哈哈。 糾錯:二。我忘了。 :P – vergenzt

+0

即使「var_dump」在註釋中,這也會停止? – Znarkus