git pre-commit時に自動的にPerltidyを実行する


前回の記事で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

関連記事