summaryrefslogtreecommitdiff
path: root/pre-commit.hook
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.co.uk>2010-05-26 13:20:27 +0200
committerTomeu Vizoso <tomeu.vizoso@collabora.co.uk>2010-05-26 13:20:27 +0200
commit5f0f9a9c9145a129a063b041424c3109a24d9ead (patch)
treef7999762a8f71f407295641586ac013d7bfe091e /pre-commit.hook
parent1319da5b7f483e48a90b0b7489f77236ba26f479 (diff)
downloadpygobject-5f0f9a9c9145a129a063b041424c3109a24d9ead.tar.gz
Install pre-commit hook that checks the code changes for style conformance
Diffstat (limited to 'pre-commit.hook')
-rwxr-xr-xpre-commit.hook39
1 files changed, 39 insertions, 0 deletions
diff --git a/pre-commit.hook b/pre-commit.hook
new file mode 100755
index 00000000..6eafd526
--- /dev/null
+++ b/pre-commit.hook
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# Check that the code follows a consistant code style
+#
+
+# Check for existence of astyle, and error out if not present.
+if ! builtin type -P astyle; then
+ echo "PyGI git pre-commit hook:"
+ echo "Did not find astyle, please install it before continuing."
+ exit 1
+fi
+
+ASTYLE_PARAMETERS="-p -d -c -S -U -M60"
+
+echo "--Checking style--"
+for file in `git-diff-index --cached --name-only HEAD --diff-filter=ACMR| grep "\.c$"` ; do
+ # nf is the temporary checkout. This makes sure we check against the
+ # revision in the index (and not the checked out version).
+ nf=`git checkout-index --temp ${file} | cut -f 1`
+ newfile=`mktemp /tmp/${nf}.XXXXXX` || exit 1
+ astyle ${ASTYLE_PARAMETERS} < $nf > $newfile 2>> /dev/null
+ diff -u -p "${nf}" "${newfile}"
+ r=$?
+ rm "${newfile}"
+ rm "${nf}"
+ if [ $r != 0 ] ; then
+echo "================================================================================================="
+echo " Code style error in: $file "
+echo " "
+echo " Please fix before committing. Don't forget to run git add before trying to commit again. "
+echo " If the whole file is to be committed, this should work (run from the top-level directory): "
+echo " "
+echo " astyle ${ASTYLE_PARAMETERS} $file; git add $file; git commit"
+echo " "
+echo "================================================================================================="
+ exit 1
+ fi
+done
+echo "--Checking style pass--"