diff options
author | teor <teor@torproject.org> | 2019-10-23 15:43:27 +1000 |
---|---|---|
committer | teor <teor@torproject.org> | 2019-10-24 14:09:53 +1000 |
commit | b9a2286765ff2c6dcd51254669480982962982e8 (patch) | |
tree | d874b5709763851dd3decccc0ea3367b6917b97d /scripts/git/pre-commit.git-hook | |
parent | 71b8b7ee2ddfa5e2f8d6bf8f754276f512b5fd1c (diff) | |
download | tor-b9a2286765ff2c6dcd51254669480982962982e8.tar.gz tor-b9a2286765ff2c6dcd51254669480982962982e8.zip |
scripts/git: Add check_cocci_parse.sh to the pre-commit hook
But only check modified files, which dramatically speeds up
check_cocci_parse.sh.
Part of 31919.
Diffstat (limited to 'scripts/git/pre-commit.git-hook')
-rwxr-xr-x | scripts/git/pre-commit.git-hook | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/scripts/git/pre-commit.git-hook b/scripts/git/pre-commit.git-hook index 1c381ec60a..7437bc0851 100755 --- a/scripts/git/pre-commit.git-hook +++ b/scripts/git/pre-commit.git-hook @@ -19,6 +19,7 @@ fi if [ -d src/lib ]; then # This is the layout in 0.3.5 + # There are two copies of this list in this file perl scripts/maint/checkSpace.pl -C \ src/lib/*/*.[ch] \ src/core/*/*.[ch] \ @@ -57,3 +58,43 @@ fi if [ -e scripts/maint/checkShellScripts.sh ]; then scripts/maint/checkShellScripts.sh fi + +if [ -e scripts/coccinelle/check_cocci_parse.sh ]; then + + if [ $# -eq 0 ]; then + # When called in pre-commit, check the files modified in this commit + CHECK_FILTER="git diff --cached --name-only --diff-filter=ACMR" + # Use the owned tor source layout from 0.3.5 to filter the changed + # files. + # (There are two copies of this list in this file.) + CHECK_FILES="$($CHECK_FILTER \ + src/lib/*/*.[ch] \ + src/core/*/*.[ch] \ + src/feature/*/*.[ch] \ + src/app/*/*.[ch] \ + src/test/*.[ch] \ + src/test/*/*.[ch] \ + src/tools/*.[ch] \ + )" + fi + + if [ "${CHECK_FILES:-$*}" ]; then + printf "Modified files:\n%s\n" "${CHECK_FILES:-$*}" + + # Run a verbose cocci parse check on the changed files + # (spatch is slow, so we don't want to check all the files.) + if [ $# -eq 0 ]; then + # pre-commit: use $CHECK_FILES, fails on spaces in file names + # + # We want word splitting here, because file names are space + # separated + # shellcheck disable=SC2086 + VERBOSE=1 scripts/coccinelle/check_cocci_parse.sh \ + $CHECK_FILES + else + # pre-push: use "$@" to preserve spaces in arguments + VERBOSE=1 scripts/coccinelle/check_cocci_parse.sh \ + "$@" + fi + fi +fi |