pre-commit.hook: Use the file content from the index.
authorEdward Hervey <bilboed@bilboed.com>
Mon, 9 Feb 2009 10:57:16 +0000 (11:57 +0100)
committerEdward Hervey <bilboed@bilboed.com>
Mon, 9 Feb 2009 10:57:16 +0000 (11:57 +0100)
Issue reported by Jonas Holmberg on #gstreamer

hooks/pre-commit.hook

index a1d7502..a896fa4 100755 (executable)
@@ -20,18 +20,20 @@ INDENT_PARAMETERS="--braces-on-if-line \
  
 echo "--Checking style--"
 for file in `git-diff-index --cached --name-only HEAD | grep "\.c$"` ; do
-    test -f ${file} || continue
-    tempfoo=`basename $0`
-    newfile=`mktemp /tmp/${tempfoo}.XXXXXX` || exit 1
+    # 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
     indent ${INDENT_PARAMETERS} \
-       $file -o $newfile 2>> /dev/null
+       $nf -o $newfile 2>> /dev/null
     # FIXME: Call indent twice as it tends to do line-breaks
     # different for every second call.
     indent ${INDENT_PARAMETERS} \
         $newfile 2>> /dev/null
-    diff -u -p "${file}" "${newfile}"
+    diff -u -p "${nf}" "${newfile}"
     r=$?
     rm "${newfile}"
+    rm "${nf}"
     if [ $r != 0 ] ; then
 echo "Code style error in $file, please fix before commiting."
         exit 1