From 9fdfa5bc6e8bcaa1d1a6bd4d8bdd68bb39d967ed Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Mon, 18 Oct 2010 16:39:50 -0400 Subject: [PATCH] Document suggested Git hooks. `pre-commit-diff-check` is the current stock pre-commit.sample that `git init` installs. --- misc/hooks/README | 10 +++++++ misc/hooks/pre-commit-diff-check | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 misc/hooks/README create mode 100755 misc/hooks/pre-commit-diff-check diff --git a/misc/hooks/README b/misc/hooks/README new file mode 100644 index 0000000..99ede2a --- /dev/null +++ b/misc/hooks/README @@ -0,0 +1,10 @@ +Git provides hooks to automatically execute scripts at certain points. +See the `Git Community Book`_ for details. + + +#!/bin/sh +./misc/hooks/pre-commit-diff-check || exit 1 # check patch formatting +make check || exit 1 # check sawsim execution + + +.. _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 index 0000000..4c30551 --- /dev/null +++ b/misc/hooks/pre-commit-diff-check @@ -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 -- -- 2.26.2