Document suggested Git hooks.
authorW. Trevor King <wking@drexel.edu>
Mon, 18 Oct 2010 20:39:50 +0000 (16:39 -0400)
committerW. Trevor King <wking@drexel.edu>
Mon, 18 Oct 2010 20:39:50 +0000 (16:39 -0400)
`pre-commit-diff-check` is the current stock pre-commit.sample that
`git init` installs.

misc/hooks/README [new file with mode: 0644]
misc/hooks/pre-commit-diff-check [new file with mode: 0755]

diff --git a/misc/hooks/README b/misc/hooks/README
new file mode 100644 (file)
index 0000000..99ede2a
--- /dev/null
@@ -0,0 +1,10 @@
+Git provides hooks to automatically execute scripts at certain points.
+See the `Git Community Book`_ for details.
+
+<file path=".git/hooks/pre-commit">
+#!/bin/sh
+./misc/hooks/pre-commit-diff-check || exit 1    # check patch formatting
+make check || exit 1                            # check sawsim execution
+</file>
+
+.. _Git Community Book: http://book.git-scm.com/5_git_hooks.html
diff --git a/misc/hooks/pre-commit-diff-check b/misc/hooks/pre-commit-diff-check
new file mode 100755 (executable)
index 0000000..4c30551
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed.
+# Called by "git commit" with no arguments.  The hook should
+# exit with non-zero status after issuing an appropriate message if
+# it wants to stop the commit.
+#
+# To enable this hook, call it from .git/hooks/pre-commit
+
+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)
+
+# 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')"
+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
+
+exec git diff-index --check --cached $against --