デバッグ用のコードが残っているとGitでコミットできないようにする - Masteries
の記事の返歌です。
こちらの記事では、git commit
の際(pre-commit)に、変数の中身を人間が見やすい形で出力する Data::Printer
をuse
しているのかどうか The Silver Searcher のag
コマンドを使ってPerlスクリプトを検索し、残っていればcommitできないようにしています。
この発想を借りて、PythonではPerlのDDPに相当するのが pprint なので、これを検索文字列として以下のようにすれば同様のことができそうです。
#!/bin/sh
word='pprint'
if ag --python $word $(git rev-parse --show-toplevel); then
echo "some file contains code for debugging: $word"
exit 1;
fi
個人的には「pprintが残っているかどうか」だけじゃなく、「pprintが残っているかどうか、残っていればどこに残っているのか」まで出力して欲しいなと思ったため、元記事にある > /dev/null
の部分を削除しています。これでcommit時にag
コマンドでの検索結果をそのまま出力してくれるので、こちらの方が便利そうです。
また、ag
を導入している場合は上記のpre-commitファイルで問題ないですが、導入していない場合はgrep
を使った下記のスクリプトでも良さそうです。(ただし、.py
という拡張子が付いているファイルが検索対象となるので、ag
と多少挙動が変わります。)
#!/bin/sh
word='pprint'
if grep -r $word $(git rev-parse --show-toplevel) --include='*.py'; then
echo "some file contains code for debugging: $word"
exit 1;
fi
※ そもそもデバッグ時に pprint
を使っていないよ、という人がいると思います。そういった人はこの発想を元に デバッグに使っているコードを検索対象とする ようにすれば良さそうですね。