Documentation: fix missing links to git(7)
[gitweb.git] / git-format-patch.sh
index b43ba3909c200b84e23d678408a0bf876fd3f3c6..921feee59cd7e770328fc1d167e01730a238489e 100755 (executable)
@@ -3,11 +3,16 @@
 # Copyright (c) 2005 Junio C Hamano
 #
 
-. git-sh-setup || die "Not a git archive."
+. git-sh-setup
+
+# Force diff to run in C locale.
+LANG=C LC_ALL=C
+export LANG LC_ALL
 
 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 +68,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.
        ;;
@@ -95,7 +103,7 @@ filelist=$tmp-files
 # 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"
        ;;
@@ -127,7 +135,8 @@ do
                rev2=`expr "$revpair" : '.*\.\.\(.*\)'`
                ;;
        *)
-               usage
+               rev1="$revpair^"
+               rev2="$revpair"
                ;;
        esac
        git-rev-parse --verify "$rev1^0" >/dev/null 2>&1 ||
@@ -233,9 +242,8 @@ Date: '"$ad"
        echo
        git-diff-tree -p $diff_opts "$commit" | git-apply --stat --summary
        echo
-       git-cat-file commit "$commit^" | sed -e 's/^tree /applies-to: /' -e q
        git-diff-tree -p $diff_opts "$commit"
-       echo "---"
+       echo "-- "
        echo "@@GIT_VERSION@@"
 
        case "$mbox" in
@@ -246,6 +254,15 @@ Date: '"$ad"
 }
 
 total=`wc -l <$series | tr -dc "[0-9]"`
+case "$total,$numbered" in
+1,*)
+       numfmt='' ;;
+*,t)
+       numfmt=`echo "$total" | wc -c`
+       numfmt=$(($numfmt-1))
+       numfmt=" %0${numfmt}d/$total"
+esac
+
 i=1
 while read commit
 do
@@ -254,16 +271,13 @@ do
     case "$numbered" in
     '') num= ;;
     *)
-       case $total in
-       1) num= ;;
-       *) num=' '`printf "%d/%d" $i $total` ;;
-       esac
+        num=`printf "$numfmt" $i` ;;
     esac
 
     file=`printf '%04d-%stxt' $i "$title"`
     if test '' = "$stdout"
     then
-           echo "$file"
+           echo "$file"
            process_one >"$outdir$file"
            if test t = "$check"
            then
@@ -274,7 +288,7 @@ do
                :
            fi
     else
-           echo >&2 "$file"
+           echo >&2 "$file"
            process_one
     fi
     i=`expr "$i" + 1`