summaryrefslogtreecommitdiff
path: root/tools/git-applymbox
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2005-07-24 01:46:27 (GMT)
committerLinus Torvalds <torvalds@g5.osdl.org>2005-07-24 01:46:27 (GMT)
commitfd1fcd9f57406cd5f278adb6b3ceeb1b7637062a (patch)
tree5cf73dc0ead0f081222ef2c7f16210c922b39b52 /tools/git-applymbox
parentc0a58fbb511028a3500987417376a5cfb2c141da (diff)
downloadgit-fd1fcd9f57406cd5f278adb6b3ceeb1b7637062a.zip
git-fd1fcd9f57406cd5f278adb6b3ceeb1b7637062a.tar.gz
git-fd1fcd9f57406cd5f278adb6b3ceeb1b7637062a.tar.bz2
Rename the "tools" programs to also have the "git-" prefix
Hey, people are using them, and we have an install target for them, so make sure that we can actually install them sanely without disturbing the namespace.
Diffstat (limited to 'tools/git-applymbox')
-rwxr-xr-xtools/git-applymbox63
1 files changed, 63 insertions, 0 deletions
diff --git a/tools/git-applymbox b/tools/git-applymbox
new file mode 100755
index 0000000..bc2dbf2
--- /dev/null
+++ b/tools/git-applymbox
@@ -0,0 +1,63 @@
+#!/bin/sh
+##
+## "dotest" is my stupid name for my patch-application script, which
+## I never got around to renaming after I tested it. We're now on the
+## second generation of scripts, still called "dotest".
+##
+## Update: Ryan Anderson finally shamed me into naming this "applymbox".
+##
+## You give it a mbox-format collection of emails, and it will try to
+## apply them to the kernel using "applypatch"
+##
+## applymbox [ -c .dotest/msg-number ] [ -q ] 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
+## (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.
+
+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
+
+case "$query_apply" in
+t) touch .dotest/.query_apply
+esac
+
+for i in .dotest/0*
+do
+ 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
+ # 2 is a special exit code from applypatch to indicate that
+ # the patch wasn't applied, but continue anyway
+ [ $ret -ne 2 ] && exit $ret
+ fi
+done
+# return to pristine
+rm -fr .dotest