Fix install_hooks.sh I accidentally swapped the arguments around for a git command. Also, this script needs to clean up the git config and the .git/hooks dir before it adds new hooks. Otherwise git will run the same command multiple times in parallel. Bug: b/187094215 Change-Id: I70ca3bd3ba381e581b176bc9794a26d89937f00f
diff --git a/install_hooks.sh b/install_hooks.sh index 90c3480..822a324 100755 --- a/install_hooks.sh +++ b/install_hooks.sh
@@ -1,7 +1,7 @@ #! /usr/bin/env sh -#git config --add hook.pre-commit.command `realpath dir=`realpath $(dirname "$BASH_SOURCE:-0")` +githookdir=`git rev-parse --git-dir`/hooks # Space separated list of hooks to install declare -a HOOKS=("pre-commit" "commit-msg") @@ -10,6 +10,16 @@ if [ ! -f "${dir}/${hook}" ]; then continue fi + + # Soft remove the old script in .git/hooks so that git doesn't try to run + # multiple hooks. + if [ -f "${githookdir}/${hook}" ]; then + mv "${githookdir}/${hook}" "${githookdir}/${hook}.old" + fi + + git config --unset-all hook.${hook}.command git config --add hook.${hook}.command "${dir}/${hook}" - git list hook "${hook}" + # Sanity check: there should be a single hook per line and it should point to the + # git-hooks repository. + git hook list "${hook}" done