X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=tools%2Fgit-applymbox;h=2b32dab5f54e8542fc6f5be481fd0f0f8f461137;hb=89bc8c785e20258efba3b2b5ffc26098fa0b8bc8;hp=e44f5d7970deda7e28566c526be558c5a0c6cc3b;hpb=e8c80638abc99928dba9ac832589749a531e2e21;p=git.git diff --git a/tools/git-applymbox b/tools/git-applymbox index e44f5d79..2b32dab5 100755 --- a/tools/git-applymbox +++ b/tools/git-applymbox @@ -9,7 +9,7 @@ ## You give it a mbox-format collection of emails, and it will try to ## apply them to the kernel using "applypatch" ## -## applymbox [ -q ] (-c .dotest/msg-number | mail_archive) [Signoff_file]" +## applymbox [-u] [-k] [-q] (-c .dotest/msg-number | mail_archive) [Signoff_file]" ## ## The patch application may fail in the middle. In which case: ## (1) look at .dotest/patch and fix it up to apply @@ -18,10 +18,19 @@ ## use a Signoff_file, because applypatch wants to append the sign-off ## message to msg-clean every time it is run. -query_apply= continue= resume=t +. git-sh-setup-script || die "Not a git archive" + +usage () { + echo >&2 "applymbox [-u] [-k] [-q] (-c .dotest/ | mbox) [signoff]" + exit 1 +} + +keep_subject= query_apply= continue= utf8= resume=t while case "$#" in 0) break ;; esac do case "$1" in + -u) utf8=-u ;; + -k) keep_subject=-k ;; -q) query_apply=t ;; -c) continue="$2"; resume=f; shift ;; -*) usage ;; @@ -38,9 +47,18 @@ case "$continue" in shift esac +files=$(git-diff-cache --cached --name-only HEAD) || exit +if [ "$files" ]; then + echo "Dirty index: cannot apply patches (dirty: $files)" >&2 + exit 1 +fi + case "$query_apply" in t) touch .dotest/.query_apply esac +case "$keep_subject" in +-k) : >.dotest/.keep_subject +esac signoff="$1" set x .dotest/0* @@ -52,7 +70,8 @@ do f,$i) resume=t;; f,*) continue;; *) - git-mailinfo .dotest/msg .dotest/patch <$i >.dotest/info || exit 1 + git-mailinfo $keep_subject $utf8 \ + .dotest/msg .dotest/patch <$i >.dotest/info || exit 1 git-stripspace < .dotest/msg > .dotest/msg-clean ;; esac