2017-07-31 110 views
1

我有git提交鉤子腳本,誰檢查提交輸入消息,如果消息不包含單詞「更新」腳本有拒絕提交。Git預先提交鉤子檢查消息

#!/bin/bash 
read -p "Enter a commit message: " message 

if [[ ${message} != *"updated"* ]];then 
    echo "Your commit message must contain the word 'updated'" 
    else 
    git commit -m "$message" 
    fi 

如何使這個鉤自動執行的,如果我試圖把一些文件在我的本地回購與消息:git的承諾-m「更新:東西」,我的想法是讓不喜歡「運行此腳本做提交「,但是然後你打開控制檯並嘗試通過鍵入commant進行提交,腳本會自動檢查你的提交信息並通過或拒絕。

+0

https://www.git-scm.com/docs/githooks#_pre_commit或https://www.git-scm.com/docs/githooks#_prepare_commit_msg或https://www.git-scm .COM /文檔/ githooks#_commit_msg。 – ElpieKay

+0

感謝您的回覆!也許你知道我可以如何改變我的鉤子代碼,拒絕提交如果我的消息不包含單詞「更新」?例如,如果我在git commit -m中輸入錯誤的信息,它會拒絕提交,如果真的通過它 – Andrej

回答

2

commit-msg爲例。

#!/bin/bash 

MSG="$1" 

if ! grep -qE "updated" "$MSG";then 
    cat "$MSG" 
    echo "Your commit message must contain the word 'updated'" 
    exit 1 
fi 

chmod 755 commit-msg,並複製它作爲.git/hooks/commit-msg

+0

你能解釋最後一行嗎? chmod 755 commit-msg並將其複製爲.git/hooks/commit-msg。你的意思是chmod + x ./commit-msg? 755是做什麼的? – Andrej

+0

現在我複製你的代碼ant添加它在文件上,然後我嘗試提交我有一個錯誤:錯誤:無法運行.git/hooks/pre-commit:沒有這樣的文件或目錄 – Andrej

+0

@Andrej'755'是替代' a + x'雖然不完全一樣。最後一行'chmod ...'不是鉤子'commit-msg'的一部分。將代碼複製到一個文件中,並命名文件'commit-msg',使其可執行並將其複製到當前存儲庫的'.git/hooks /'中。當'git commit'完成時,調用鉤子'commit-msg'並檢查提交消息。如果它不包含「更新」,則提交失敗。 – ElpieKay