Fix "git-diff-script A B"
[git.git] / git-diff-script
index 673853b..99ff264 100755 (executable)
@@ -1,15 +1,22 @@
 #!/bin/sh
-rev=($(git-rev-parse --revs-only "$@"))
-flags=($(git-rev-parse --no-revs "$@"))
+rev=($(git-rev-parse --revs-only "$@")) || exit
+flags=($(git-rev-parse --no-revs --flags "$@"))
+files=($(git-rev-parse --no-revs --no-flags "$@"))
 case "${#rev[*]}" in
 0)
        git-diff-files -M -p "$@";;
 1)
        git-diff-cache -M -p "$@";;
 2)
-       begin=$(echo "${rev[1]}" | tr -d '^')
-       end="${rev[0]}"
-       git-diff-tree -M -p $flags $begin $end;;
+       case "${rev[1]}" in
+       ^?*)
+               begin=$(echo "${rev[1]}" | tr -d '^')
+               end="${rev[0]}" ;;
+       *)
+               begin="${rev[0]}"
+               end="${rev[1]}" ;;
+       esac
+       git-diff-tree -M -p $flags $begin $end $files;;
 *)
        echo "I don't understand"
        exit 1;;