diff --git a/.githooks/pre-commit b/.githooks/pre-commit index 22a39f77..4cc182b1 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -1,13 +1,23 @@ #!/bin/bash +if git rev-parse --verify HEAD >/dev/null 2>&1; then + against=HEAD +else + # Initial commit: diff against an empty tree object + against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 +fi + # fail if we add any new lines to C or Scheme source containing a tab -if git diff --name-only | egrep '\.(cpp|h|scm|sld|stub)$' | xargs -d'\n' git diff -U0 -- | grep -q $'^+ *\t'; then +if git diff --name-only "$against" |\ + egrep '\.(cpp|h|scm|sld|stub)$' |\ + xargs -d'\n' git diff -U0 --no-color "$against" -- |\ + grep -q $'^+ *\t'; then echo "Error: Attempting to add a source file using tabs for indentation." echo echo -n " " - git diff --name-only |\ + git diff --name-only "$against" |\ egrep '\.(cpp|h|scm|sld|stub)$' |\ - xargs -d'\n' git diff -U0 -- |\ + xargs -d'\n' git diff -U0 "$against" -- |\ grep $'^+ *\t' | head -1 echo cat <