2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Git でコミット前に禁止ワードが入っていないかチェックする

Posted at

はじめに

レビューをしていても動作確認していても入れちゃいけないコードがコミットされてしまうということがありますね。
自分でなんどかやらかしてしまっているので戒めのためにコミット前に禁止ワードが入っていないかチェックするフックを追加してみます。

参考ページ

http://qiita.com/niku4i/items/f39eb7d4d5c4f5c0775c
http://qiita.com/quattro_4/items/f9e0884f2efe7e8c033a

フックのスクリプトを設置する

  • .git/hooks/pre-commit に下記のスクリプトを設置してコミット前に禁止ワードが含まれていないかをチェックします。
  • コードのフォーマッターなどすでに pre-commit が存在する場合は http://qiita.com/nirasan/items/41558a0fd903e01f263d を参考に追加してください。
.git/hooks/pre-commit
#!/bin/sh

if [ -e ~/.git_prohibited_words ]; then
    while read word; do
        # Skip comment or blank lines
        echo $word | grep ^# > /dev/null && continue
        echo $word | grep '^\s*$' > /dev/null && continue

        IFS=$'\n';
        for file in $(git diff --cached --name-only)
        do
            result=$(git diff --cached -U0 -- $file | grep -A5 -B5 -i "$word")
            if [ $? -eq 0 ]; then
                if [ -z $NO_WORD_CHECK ]; then
                    cat <<EOL

[WORD CHECK ERROR]

FILENAME:
    $file

PROHIBITED WORD:
    $word


$result


HINT:
    If you want to force commit, please append prefix 'NO_WORD_CHECK=1' to command.


EOL
                    exit 1
                else
                    exit 0
                fi
            fi
        done
    done < ~/.git_prohibited_words
fi

禁止ワードを設定する

  • 禁止ワードは ~/.git_prohibited_words に改行区切りで複数個設定できるものとし、下記のように設定します。
$ echo "prohibited word" >> ~/.git_prohibited_words

実行する

  • 禁止ワード defined prohibited word. を設定してコミットに含めた場合、以下のような表示とともに git commit が失敗します。
[WORD CHECK ERROR]

FILENAME:
    path/to/filename

PROHIBITED WORD:
    defined prohibited word.


diff --git a/path/to/filename b/path/to/filename
index eb36957..511fd1a 100644
--- a/path/to/filename
+++ b/path/to/filename
@@ -6,0 +7 @@
+defined prohibited word.


HINT:
    If you want to force commit, please append prefix 'NO_WORD_CHECK=1' to command.

禁止ワード入りのコードをコミットする

  • 禁止ワード入りのコードを強制でコミットさせたい場合は NO_WORD_CHECK=1 git commit と実行してください
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?