X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=git-diff-script;h=a285a2a4ee056fc4689c139eebe299072c91b46d;hb=b893f09104ee5f1d8710dfe17cdf1cbac995f17a;hp=d70e8b9f2961fb5cbe53d473af8f2c1c8c1024d4;hpb=940c1bb0181cb20454bf3573134175f86983a0ce;p=git.git diff --git a/git-diff-script b/git-diff-script index d70e8b9f..a285a2a4 100755 --- a/git-diff-script +++ b/git-diff-script @@ -1,16 +1,35 @@ #!/bin/sh -rev=($(git-rev-parse --revs-only "$@")) -flags=($(git-rev-parse --no-revs "$@")) -case "${#rev[*]}" in -0) - git-diff-files -p "$@";; -1) - git-diff-cache -p "$@";; -2) - begin=$(echo "${rev[1]}" | tr -d '^') - end="${rev[0]}" - git-diff-tree -p $flags $begin $end;; +# +# Copyright (c) 2005 Linus Torvalds +# Copyright (c) 2005 Junio C Hamano + +rev=$(git-rev-parse --revs-only --no-flags --sq "$@") || exit +flags=$(git-rev-parse --no-revs --flags --sq "$@") +files=$(git-rev-parse --no-revs --no-flags --sq "$@") + +: ${flags:="'-M' '-p'"} + +case "$rev" in +?*' '?*' '?*) + die "I don't understand" + ;; +?*' '^?*) + 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 $rev $files" + ;; +?*' ') + cmd="git-diff-cache $flags $rev $files" + ;; +'') + cmd="git-diff-files $flags $files" + ;; *) - echo "I don't understand" - exit 1;; + die "I don't understand $*" + ;; esac + +eval "$cmd"