apply: allow-binary-replacement.
[gitweb.git] / git-format-patch.sh
index 0207ab18a3876249a928e7539d8f594a4f6921f1..7ee5d328c0324cc29a0f93a9ff4d9f8a8e19891e 100755 (executable)
@@ -8,6 +8,7 @@
 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
 1,?*..?*)
        # single "rev1..rev2"
        ;;
+1,?*..)
+       # single "rev1.." should mean "rev1..HEAD"
+       set x "$1"HEAD
+       shift
+       ;;
 1,*)
        # single rev1
        set x "$1..HEAD"
@@ -190,7 +201,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\