2017-07-31 6 views
1

私はgitコミットフックスクリプトを持っています。コミット入力メッセージをチェックしています。メッセージに "updated"という単語が含まれていない場合、スクリプトはコミットを拒否しています。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コミット「更新日:何かを」、私の考えでは、それが「好きにこのスクリプトを実行しないようにすることですコミットする "が、コンソールを開きコミントを入力してコミットしようとすると、スクリプトはコミットメッセージを自動的にチェックし、それを渡すか拒否します。

+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/docs/githooks#_commit_msg。 – ElpieKay

+0

返事ありがとう!私のメッセージに「更新された」という単語が含まれていない場合、コミットを拒否するためにフックコードを変更する方法を知っているかもしれません。例えば、git commit -mで間違ったメッセージを入力した場合、コミットを拒否します。それがtrueの場合は – 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

@Andrej '755'は、ファイルの内容をコピーして、ファイルに追加してからコミットしようとしました。エラー:エラー:.git/hooks/pre-commitを実行できません: – Andrej

+0

@Andrej ' a + x'はここでは全く同じではありません。最後の行 'chmod ...'はフック 'commit-msg'の一部ではありません。コードをファイルにコピーし、ファイルに 'commit-msg'という名前を付け、実行可能にして、それを現在のリポジトリの' .git/hooks/'にコピーします。 'git commit'が行われると、' commit-msg'フックが呼び出され、コミットメッセージがチェックされます。 「更新済み」が含まれていない場合、コミットは失敗します。 – ElpieKay

関連する問題