projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
git-config-set: add more options
[git.git]
/
git-diff.sh
diff --git
a/git-diff.sh
b/git-diff.sh
index
9732c8a
..
b3ec84b
100755
(executable)
--- a/
git-diff.sh
+++ b/
git-diff.sh
@@
-9,23
+9,35
@@
files=$(git-rev-parse --no-revs --no-flags --sq "$@")
: ${flags:="'-M' '-p'"}
: ${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
?*' '?*' '?*)
case "$rev" in
?*' '?*' '?*)
- die "I don't understand"
+ echo >&2 "I don't understand"
+ exit 1
;;
?*' '^?*)
begin=$(expr "$rev" : '.*^.\([0-9a-f]*\).*') &&
end=$(expr "$rev" : '.\([0-9a-f]*\). .*') || exit
;;
?*' '^?*)
begin=$(expr "$rev" : '.*^.\([0-9a-f]*\).*') &&
end=$(expr "$rev" : '.\([0-9a-f]*\). .*') || exit
- cmd="git-diff-tree $flags $begin $end $files"
+ cmd="git-diff-tree $flags $begin $end
--
$files"
;;
?*' '?*)
;;
?*' '?*)
- cmd="git-diff-tree $flags $rev $files"
+ cmd="git-diff-tree $flags $rev
--
$files"
;;
?*' ')
;;
?*' ')
- cmd="git-diff-index $flags $rev $files"
+ cmd="git-diff-index $flags $rev
--
$files"
;;
'')
;;
'')
- cmd="git-diff-files $flags $files"
+ cmd="git-diff-files $flags
--
$files"
;;
*)
die "I don't understand $*"
;;
*)
die "I don't understand $*"