diff options
author | Junio C Hamano <junkio@cox.net> | 2005-07-22 16:04:19 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-22 16:29:28 -0700 |
commit | 3727531899aecac02c50c6580e84c627c25fcaa6 (patch) | |
tree | 95d1bda217cd49e27eed13363de01af3a6e7465a /tools | |
parent | d854f783af2a441827d66b4b70e9d0d9e3434b15 (diff) | |
download | git-3727531899aecac02c50c6580e84c627c25fcaa6.tar.gz |
[PATCH] tools/applymbox: allow manual fixing and continuing after a failure.
With "-c .dotest/0002" flag, the applymbox command can be told
to use existing .dotest/patch file after hand-fixing the patch
conflicts for the second patch in the mailbox, and continue on
from that message, skipping the already applied first patch in
.dotest/0001.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/applymbox | 48 |
1 files changed, 38 insertions, 10 deletions
diff --git a/tools/applymbox b/tools/applymbox index 5ac8d2b4da..bc2dbf26a9 100755 --- a/tools/applymbox +++ b/tools/applymbox @@ -9,20 +9,48 @@ ## You give it a mbox-format collection of emails, and it will try to ## apply them to the kernel using "applypatch" ## -## dotest [ -q ] mail_archive [Signoff_file] +## applymbox [ -c .dotest/msg-number ] [ -q ] mail_archive [Signoff_file]" ## -rm -rf .dotest -mkdir .dotest -case $1 in +## The patch application may fail in the middle. In which case: +## (1) look at .dotest/patch and fix it up to apply +## (2) re-run applymbox with -c .dotest/msg-number for the current one. +## 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. - -q) touch .dotest/.query_apply - shift;; +query_apply= continue= resume=t +while case "$#" in 0) break ;; esac +do + case "$1" in + -q) query_apply=t ;; + -c) continue="$2"; resume=f; shift ;; + -*) usage ;; + *) break ;; + esac + shift +done + +case "$continue" in +'') + rm -rf .dotest + mkdir .dotest + mailsplit "$1" .dotest || exit 1 esac -mailsplit $1 .dotest || exit 1 -for i in .dotest/* + +case "$query_apply" in +t) touch .dotest/.query_apply +esac + +for i in .dotest/0* do - mailinfo .dotest/msg .dotest/patch < $i > .dotest/info || exit 1 - git-stripspace < .dotest/msg > .dotest/msg-clean + case "$resume,$continue" in + f,$i) resume=t;; + f,*) continue;; + *) + mailinfo .dotest/msg .dotest/patch <$i >.dotest/info || exit 1 + git-stripspace < .dotest/msg > .dotest/msg-clean + ;; + esac applypatch .dotest/msg-clean .dotest/patch .dotest/info "$2" ret=$? if [ $ret -ne 0 ]; then |