diff --git a/_git_hooks/pre-commit b/_git_hooks/pre-commit index 3ba59e0a..664a06ce 100755 --- a/_git_hooks/pre-commit +++ b/_git_hooks/pre-commit @@ -8,7 +8,10 @@ FLAKE8="`git rev-parse --show-toplevel`/bin/flake8" status=0 -git diff --unified=1 --cached HEAD -- '*py' > $TMPDIFF +# select only changed python files which are not migrations +changed=`git diff --cached --name-only | grep 'py$' | grep -v 'migrations/[0-9]'` + +git diff --unified=1 --cached HEAD -- $changed > $TMPDIFF # only do the check when there are some changes to be commited # otherwise flake8 would hang waiting for input diff --git a/_git_hooks/update b/_git_hooks/update index 2ac082c1..c700a1b1 100755 --- a/_git_hooks/update +++ b/_git_hooks/update @@ -27,7 +27,15 @@ TMPDIFF=`tempfile` [ $refname != "refs/heads/master" -a $refname != "refs/heads/stable" ] && exit 0 -git diff --unified=1 $oldrev $newrev -- '*.py' >${TMPDIFF} +# select only changed python files which are not migrations +changed=`git diff --name-only $oldrev $newrev | grep 'py$' | grep -v 'migrations/[0-9]'` +if [ -z $changed ] ; then + # Nothing to check. Note the exit is necessary -- we would not pass any + # paths to git diff below and it would output the diff unfiltered. + exit 0 +fi + +git diff --unified=1 $oldrev $newrev -- $changed >${TMPDIFF} # there is no working tree in bare git repository, so we recreate it for flake8 git archive $newrev | tar -x -C ${TMPDIR}