X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=git-diff.sh;h=b3ec84be698311b30e8c7c793873e6caa41daf71;hb=4ddba79db76bd6425f00e99ceb1d82d179319aec;hp=9732c8ac3110e9beb65221c7528812a4655eab13;hpb=215a7ad1ef790467a4cd3f0dcffbd6e5f04c38f7;p=git.git diff --git a/git-diff.sh b/git-diff.sh index 9732c8ac..b3ec84be 100755 --- a/git-diff.sh +++ b/git-diff.sh @@ -9,23 +9,35 @@ 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]*\).*') && 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 $*"