Save errno in handle_alias()
[gitweb.git] / git-applymbox.sh
index a83246cad86c1dc589a226420891074e7017ccfc..5569fdcc3463b214411d5a168a00783b0d390044 100755 (executable)
 ## Pay a special attention to the commit log message if you do this and
 ## use a Signoff_file, because applypatch wants to append the sign-off
 ## message to msg-clean every time it is run.
+##
+## git-am is supposed to be the newer and better tool for this job.
 
-. git-sh-setup || die "Not a git archive"
+USAGE='[-u] [-k] [-q] [-m] (-c .dotest/<num> | mbox) [signoff]'
+. git-sh-setup
 
-usage () {
-    echo >&2 "applymbox [-u] [-k] [-q] [-m] (-c .dotest/<num> | mbox) [signoff]"
-    exit 1
-}
+git var GIT_COMMITTER_IDENT >/dev/null || exit
 
 keep_subject= query_apply= continue= utf8= resume=t
 while case "$#" in 0) break ;; esac
@@ -31,7 +31,7 @@ do
        -k)     keep_subject=-k ;;
        -q)     query_apply=t ;;
        -c)     continue="$2"; resume=f; shift ;;
-       -m)     fallback_3way=t ;;
+       -m)     fall_back_3way=t ;;
        -*)     usage ;;
        *)      break ;;
        esac
@@ -42,7 +42,8 @@ case "$continue" in
 '')
        rm -rf .dotest
        mkdir .dotest
-       git-mailsplit "$1" .dotest || exit 1
+       num_msgs=$(git-mailsplit "$1" .dotest) || exit 1
+       echo "$num_msgs patch(es) to process."
        shift
 esac
 
@@ -82,7 +83,11 @@ do
     do
        git-applypatch .dotest/msg-clean .dotest/patch .dotest/info "$signoff"
        case "$?" in
-       0 | 2 )
+       0)
+               # Remove the cleanly applied one to reduce clutter.
+               rm -f .dotest/$i
+               ;;
+       2)
                # 2 is a special exit code from applypatch to indicate that
                # the patch wasn't applied, but continue anyway 
                ;;