Code

Make 'git diff --cached' synonymous to 'git diff --cached HEAD'.
authorJunio C Hamano <junkio@cox.net>
Fri, 23 Sep 2005 07:53:02 +0000 (00:53 -0700)
committerJunio C Hamano <junkio@cox.net>
Fri, 23 Sep 2005 07:53:02 +0000 (00:53 -0700)
When making changes to different files (i.e. dirty working tree) and
committing logically separate changes in groups, often it is necessary
to run 'git diff --cached HEAD' to make sure that the changes being
committed makes sense.  Saying 'git diff --cached' by mistake gives
rather uninformative error message from git-diff-files complaining it
does not understand --cached flag.

Signed-off-by: Junio C Hamano <junkio@cox.net>
git-diff.sh

index 9732c8ac3110e9beb65221c7528812a4655eab13..84a152af206166e88701b27acdc7d2b033e90bab 100755 (executable)
@@ -9,9 +9,21 @@ files=$(git-rev-parse --no-revs --no-flags --sq "$@")
 
 : ${flags:="'-M' '-p'"}
 
+# I often say 'git diff --cached -p' and get scolded by git-diff-files, but
+# obviously I mean 'git diff --cached -p HEAD' in that case.
+case "$rev" in
+'')
+       case " $flags " in
+       *" '--cached' "*)
+               rev='HEAD '
+               ;;
+       esac
+esac
+
 case "$rev" in
 ?*' '?*' '?*)
-       die "I don't understand"
+       echo >&2 "I don't understand"
+       exit 1
        ;;
 ?*' '^?*)
        begin=$(expr "$rev" : '.*^.\([0-9a-f]*\).*') &&