前回の記事でvim保存時に自動的にPerltidyを適用する設定を書きましたが、毎回Perltidyが適用されると若干ラグがあるので開発効率が落ちそうで嫌だなぁと思い、どうせならpre-commit時にperltidyかけてコミットしたいということで作りました。
使い方は各自ローカルリポジトリの.git/hooks/pre-commitに下記の内容を貼り付けてください。
#!/bin/bash CURRENT_DIR="$(pwd)/$(dirname $0)" PJ="${CURRENT_DIR%/.}/../.." ORIG_IFS=$IFS IFS=$'\n' for f in $(git diff --cached --name-only --diff-filter=A,M) do # file is perl and exits if [[ "$f" =~ ^.+\.(pl|pm)$ && -e "$PJ/$f" ]]; then perltidy -q -b "$PJ/$f" if [ $? -eq 0 ]; then git add "$PJ/$f" rm -f "$PJ/$f.bak" fi fi done IFS=$ORIG_IFS |