Hello! This patch improves option handling for gitdiff.sh. Now "-p" doesn't need to precede "-r", although all options still have to be placed before the file names. Also, the patch introduces a minimal usage info for the script.
The patch is against current git-pasky. Signed-off-by: Pavel Roskin <[EMAIL PROTECTED]> --- a/gitdiff.sh +++ b/gitdiff.sh @@ -27,6 +27,13 @@ die () { exit 1 } +usage () { + echo "Usage:" >&2 + echo " gitdiff.sh -r rev1:rev2 [FILES...]" >&2 + echo " gitdiff.sh -r rev1 -r rev2 [FILES...]" >&2 + exit 1 +} + diffqfile () { dir=$1; shift file=$1; shift @@ -59,26 +66,44 @@ diffqueue () { return $ret } - -# FIXME: The commandline parsing is awful. - -if [ "$1" = "-p" ]; then - shift - parent=1 -fi - -if [ "$1" = "-r" ]; then - shift - id1=$(echo "$1": | cut -d : -f 1) - [ "$id1" != "$1" ] && id2=$(echo "$1": | cut -d : -f 2) - shift -fi - -if [ "$1" = "-r" ]; then - shift - id2="$1" - shift -fi +# Parsing the command line +id1_set= +id2_set= +while true; do + case $1 in + -p) + parent=1 + shift + ;; + -r) + if test "$id2_set"; then + echo "Too many revision numbers" 2>&1 + usage + elif test "$id1_set"; then + shift + id2="$1" + id2_set=1 + shift + else + shift + id1=$(echo "$1": | cut -d : -f 1) + id1_set=1 + if test "$id1" != "$1"; then + id2=$(echo "$1": | cut -d : -f 2) + id2_set=1 + fi + shift + fi + ;; + -*) + echo "Unknown option $1" 2>&1 + usage + ;; + *) + break + ;; + esac +done if [ "$parent" ]; then id2="$id1" -- Regards, Pavel Roskin - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html