ls-tree: Resurrect funny name quoting lost during rewrite.
[gitweb.git] / git-format-patch.sh
index 0207ab18a3876249a928e7539d8f594a4f6921f1..9b4088045a5d53ceb1b893e5f6bda575518d36c1 100755 (executable)
@@ -3,11 +3,12 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-. git-sh-setup || die "Not a git archive."
+. git-sh-setup
 
 usage () {
     echo >&2 "usage: $0"' [-n] [-o dir | --stdout] [--keep-subject] [--mbox]
     [--check] [--signoff] [-<diff options>...]
+    [--help]
     ( from..to ... | upstream [ our-head ] )
 
 Prepare each commit with its patch since our-head forked from upstream,
@@ -63,6 +64,9 @@ do
     --output-directo|--output-director|--output-directory)
     case "$#" in 1) usage ;; esac; shift
     outdir="$1" ;;
+    -h|--h|--he|--hel|--help)
+        usage
+       ;;
     -*' '* | -*"$LF"* | -*'    '*)
        # Ignore diff option that has whitespace for now.
        ;;
@@ -92,11 +96,18 @@ filelist=$tmp-files
 # 3. "rev1" "rev2      is equivalent to "rev1..rev2"
 #
 # We want to take a sequence of "rev1..rev2" in general.
+# Also, "rev1.." should mean "rev1..HEAD"; git-diff users are
+# familiar with that syntax.
 
-case "$#,$1" in
+case "$#,$1$2" in
 1,?*..?*)
        # single "rev1..rev2"
        ;;
+1,?*..)
+       # single "rev1.." should mean "rev1..HEAD"
+       set x "$1"HEAD
+       shift
+       ;;
 1,*)
        # single rev1
        set x "$1..HEAD"
@@ -120,7 +131,8 @@ do
                rev2=`expr "$revpair" : '.*\.\.\(.*\)'`
                ;;
        *)
-               usage
+               rev1="$revpair^"
+               rev2="$revpair"
                ;;
        esac
        git-rev-parse --verify "$rev1^0" >/dev/null 2>&1 ||
@@ -190,7 +202,7 @@ process_one () {
            ;;
        esac
 
-       eval "$(sed -ne "$whosepatchScript" $commsg)"
+       eval "$(LANG=C LC_ALL=C sed -ne "$whosepatchScript" $commsg)"
        test "$author,$au" = ",$me" || {
                mailScript="$mailScript"'
        a\
@@ -256,7 +268,7 @@ do
     file=`printf '%04d-%stxt' $i "$title"`
     if test '' = "$stdout"
     then
-           echo "$file"
+           echo "$file"
            process_one >"$outdir$file"
            if test t = "$check"
            then
@@ -267,7 +279,7 @@ do
                :
            fi
     else
-           echo >&2 "$file"
+           echo >&2 "$file"
            process_one
     fi
     i=`expr "$i" + 1`