From 3a2dd10545e508ef10e60e47be0b831a63daba6a Mon Sep 17 00:00:00 2001 From: Eric Paris Date: Sun, 16 Aug 2015 21:58:22 -0500 Subject: [PATCH] Speed up pre-commit by always passing at least one file to programs Some programs like the boilerplate or the flag checker will check the whole repo if they aren't given a specific set of files to test. If you use `git commit --amend` to change commit messages you will be calling these functions with no args, and thus it take a lot longer to commit no changes than it does to actually commit changes! --- hooks/pre-commit | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/hooks/pre-commit b/hooks/pre-commit index 9b7733965dc..c6eebf4d5f9 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -40,6 +40,12 @@ echo "${reset}" echo -ne "Checking for files that need boilerplate... " files=($(git diff --cached --name-only --diff-filter ACM)) +# We always make sure there is one file in the files list. Some tools check +# the whole repo if they get no files, so in fact, this is much faster on +# git commit --amend +if [[ ${#files[@]} -eq 0 ]]; then + files+=("README.md") +fi out=($(hack/boilerplate/boilerplate.py "${files[@]}")) if [[ "${#out}" -ne 0 ]]; then echo "${red}ERROR!" @@ -54,10 +60,8 @@ else fi echo "${reset}" -allfiles=($(git diff --cached --name-only --diff-filter ACM | grep -v -e "third_party" -e "Godeps")) - echo -ne "Checking for problems with flag names... " -invalid_flag_lines=$(hack/verify-flags-underscore.py "${allfiles[@]}") +invalid_flag_lines=$(hack/verify-flags-underscore.py "${files[@]}") if [[ "${invalid_flag_lines:-}" != "" ]]; then echo "${red}ERROR!" echo "There appear to be problems with the following"