-SUBDIRS = src doc .
+SUBDIRS = . src doc
doc_DATA = AUTHORS ChangeLog COPYING INSTALL NEWS README
+# This is the only way with automake I know of to force 'check-git-hooks'
+# to be evaluated before 'all'. If there is a nicer way, I'm all ears...
+BUILT_SOURCES = check-git-hooks
+
+###################################
+# git hook management
+#
+
+install-git-hooks:
+ if test -d .git; then \
+ for hook in githooks/???*; do \
+ case $$hook in \
+ *.sample|*~|*.swp) continue;; \
+ esac; \
+ if test -x $$hook; then \
+ echo "Installing git hook $${hook##*/}..."; \
+ cp $$hook .git/hooks; \
+ chmod a+x .git/hooks/$${hook##*/}; \
+ fi \
+ done \
+ fi
+
+check-git-hooks:
+ if test -d .git; then \
+ for hook in githooks/???*; do \
+ case $$hook in \
+ *.sample|*~|*.swp) continue;; \
+ esac; \
+ if test -x $$hook -a ! -e .git/hooks/$${hook##*/}; then \
+ echo "WARNING:"; \
+ echo "WARNING: You have an uninstalled git hook $$hook"; \
+ echo "WARNING:"; \
+ fi \
+ done \
+ fi
+
+
+# cleanup
clean-local:
rm -f *~
--- /dev/null
+#!/bin/bash
+#
+# This is a modified version of the stock git sample pre-commit hook.
+# In addition to the stock whitespace error checks, this one will also
+# reject any commits that try to insert TABs to *.c or *.h files.
+
+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
+
+# If you want to allow non-ascii filenames set this variable to true.
+allownonascii=$(git config hooks.allownonascii)
+
+# Redirect output to stderr.
+exec 1>&2
+
+# Cross platform projects tend to avoid non-ascii filenames; prevent
+# them from being added to the repository. We exploit the fact that the
+# printable range starts at the space character and ends with tilde.
+if [ "$allownonascii" != "true" ] &&
+ # Note that the use of brackets around a tr range is ok here, (it's
+ # even required, for portability to Solaris 10's /usr/bin/tr), since
+ # the square bracket bytes happen to fall in the designated range.
+ test $(git diff --cached --name-only --diff-filter=A -z $against |
+ LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
+then
+ echo "Error: Attempt to add a non-ascii file name."
+ echo
+ echo "This can cause problems if you want to work"
+ echo "with people on other platforms."
+ echo
+ echo "To be portable it is advisable to rename the file ..."
+ echo
+ echo "If you know what you are doing you can disable this"
+ echo "check using:"
+ echo
+ echo " git config hooks.allownonascii true"
+ echo
+ exit 1
+fi
+
+# If there are whitespace errors, print the offending file names and fail.
+git diff-index --check --cached $against --
+status=$?
+
+if [ "$status" != "0" ]; then
+ echo ""
+ echo "WARNING:"
+ echo "WARNING: Your commit would introduce whitespace errors and was"
+ echo "WARNING: hence rejected. Please fix those errors before trying"
+ echo "WARNING: to commit again."
+ echo "WARNING:"
+ exit 1
+fi
+
+# Check if any TABS have been added to .c or .h files...
+git diff --cached $against | \
+ while read line; do
+ case $line in
+ diff\ --git\ a/*)
+ file="${line##*b/}"
+ continue
+ ;;
+ esac
+ case $file in
+ *.h|*.c) ;;
+ *) continue;;
+ esac
+ echo "$line" | grep -q $'\t'
+ if [ "$?" = "0" ]; then
+ echo "WARNING:"
+ echo "WARNING: In $file:"
+ echo "WARNING:"
+ echo "WARNING: Your commit would introduce TABS in a *.c or *.h"
+ echo "WARNING: file and was hence rejected. We prefer not to use"
+ echo "WARNING: TABS in source code to avoid TAB-size dependent"
+ echo "WARNING: incorrect indentation to sneak in. Please fix those"
+ echo "WARNING: errors before trying to commit again."
+ echo "WARNING:"
+ exit 1
+ fi
+ done
+
+exit 0