2017-03-24 12 views
0

私は誤って自分のレポにバイナリをコミットしないようにしようとしています。ファイルサイズがある閾値を超えていることを検出するフックを考えましたが、私のコミットが実行可能パーミッションビットを持つファイルを変更するときに、いつでもpre-commitフックに失敗するとより便利になると思います。Git pre-commitフック:実行可能ファイルを含むコミットを防ぐ

私はこれをPython/Ruby /その他のスクリプト言語で処理する方法を知っていますが、私は理想的にはbashだけでそれを行うことができます。何か案は?

答えて

0

私はこれで終わりました。 REPO_ROOTを基準にしてコミットされているファイル名をリストします。それらをlsに渡し、-1フラグを1行につけ、-Fフラグに*を実行可能ファイルに追加します。それは末尾に*のgrepsです。一致するgrepはいずれもフックに失敗します。

cd $REPO_ROOT 
STAGED_EXECUTABLES=$(git diff --diff-filter=ACMRTUXB --cached HEAD --name-only | xargs ls -1F | egrep '\*$') 
EXECUTABLES_MISSING=$? 
if [ $EXECUTABLES_MISSING -eq 0 ]; then 
    echo "You tried to commit an executable file. Override with \`git commit --no-verify\` if required." > /dev/stderr 
    exit 1 
fi 
関連する問題