X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;ds=sidebyside;f=tools%2Fgit-applymbox;h=e58bb21467ac36ca4354deb71db9556d99f5f863;hb=0516de30e8bdd26086e2a3edd3375981fd0c34d6;hp=e44f5d7970deda7e28566c526be558c5a0c6cc3b;hpb=3f81fc82743ccd4fd7157f1f1db41605eb018fb9;p=git.git diff --git a/tools/git-applymbox b/tools/git-applymbox index e44f5d79..e58bb214 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* @@ -50,9 +68,11 @@ do i="$1" case "$resume,$continue" in f,$i) resume=t;; - f,*) continue;; + f,*) shift + 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