Teach applymbox to keep the Subject: line.
This corresponds to the -k flag to git format-patch --mbox option. The option should probably not be used when applying a real e-mail patch, but is needed when format-patch and applymbox pair is used for cherrypicking. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
@ -9,7 +9,7 @@
|
|||||||
## You give it a mbox-format collection of emails, and it will try to
|
## You give it a mbox-format collection of emails, and it will try to
|
||||||
## apply them to the kernel using "applypatch"
|
## apply them to the kernel using "applypatch"
|
||||||
##
|
##
|
||||||
## applymbox [ -q ] (-c .dotest/msg-number | mail_archive) [Signoff_file]"
|
## applymbox [ -k ] [ -q ] (-c .dotest/msg-number | mail_archive) [Signoff_file]"
|
||||||
##
|
##
|
||||||
## The patch application may fail in the middle. In which case:
|
## The patch application may fail in the middle. In which case:
|
||||||
## (1) look at .dotest/patch and fix it up to apply
|
## (1) look at .dotest/patch and fix it up to apply
|
||||||
@ -18,10 +18,11 @@
|
|||||||
## use a Signoff_file, because applypatch wants to append the sign-off
|
## use a Signoff_file, because applypatch wants to append the sign-off
|
||||||
## message to msg-clean every time it is run.
|
## message to msg-clean every time it is run.
|
||||||
|
|
||||||
query_apply= continue= resume=t
|
keep_subject= query_apply= continue= resume=t
|
||||||
while case "$#" in 0) break ;; esac
|
while case "$#" in 0) break ;; esac
|
||||||
do
|
do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
|
-k) keep_subject=-k ;;
|
||||||
-q) query_apply=t ;;
|
-q) query_apply=t ;;
|
||||||
-c) continue="$2"; resume=f; shift ;;
|
-c) continue="$2"; resume=f; shift ;;
|
||||||
-*) usage ;;
|
-*) usage ;;
|
||||||
@ -41,6 +42,9 @@ esac
|
|||||||
case "$query_apply" in
|
case "$query_apply" in
|
||||||
t) touch .dotest/.query_apply
|
t) touch .dotest/.query_apply
|
||||||
esac
|
esac
|
||||||
|
case "$keep_subject" in
|
||||||
|
-k) : >.dotest/.keep_subject
|
||||||
|
esac
|
||||||
|
|
||||||
signoff="$1"
|
signoff="$1"
|
||||||
set x .dotest/0*
|
set x .dotest/0*
|
||||||
@ -52,7 +56,8 @@ do
|
|||||||
f,$i) resume=t;;
|
f,$i) resume=t;;
|
||||||
f,*) continue;;
|
f,*) continue;;
|
||||||
*)
|
*)
|
||||||
git-mailinfo .dotest/msg .dotest/patch <$i >.dotest/info || exit 1
|
git-mailinfo $keep_subject \
|
||||||
|
.dotest/msg .dotest/patch <$i >.dotest/info || exit 1
|
||||||
git-stripspace < .dotest/msg > .dotest/msg-clean
|
git-stripspace < .dotest/msg > .dotest/msg-clean
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -16,6 +16,7 @@ final=.dotest/final-commit
|
|||||||
## If this file exists, we ask before applying
|
## If this file exists, we ask before applying
|
||||||
##
|
##
|
||||||
query_apply=.dotest/.query_apply
|
query_apply=.dotest/.query_apply
|
||||||
|
keep_subject=.dotest/.keep_subject
|
||||||
MSGFILE=$1
|
MSGFILE=$1
|
||||||
PATCHFILE=$2
|
PATCHFILE=$2
|
||||||
INFO=$3
|
INFO=$3
|
||||||
@ -30,8 +31,10 @@ export SUBJECT="$(sed -n '/^Subject/ s/Subject: //p' .dotest/info)"
|
|||||||
if [ -n "$signoff" -a -f "$signoff" ]; then
|
if [ -n "$signoff" -a -f "$signoff" ]; then
|
||||||
cat $signoff >> $MSGFILE
|
cat $signoff >> $MSGFILE
|
||||||
fi
|
fi
|
||||||
|
patch_header=
|
||||||
|
test -f "$keep_subject" || patch_header='[PATCH] '
|
||||||
|
|
||||||
(echo "[PATCH] $SUBJECT" ; if [ -s $MSGFILE ]; then echo ; cat $MSGFILE; fi ) > $final
|
(echo "$patch_header$SUBJECT" ; if [ -s $MSGFILE ]; then echo ; cat $MSGFILE; fi ) > $final
|
||||||
|
|
||||||
f=0
|
f=0
|
||||||
[ -f $query_apply ] || f=1
|
[ -f $query_apply ] || f=1
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
static FILE *cmitmsg, *patchfile;
|
static FILE *cmitmsg, *patchfile;
|
||||||
|
|
||||||
|
static int keep_subject = 0;
|
||||||
static char line[1000];
|
static char line[1000];
|
||||||
static char date[1000];
|
static char date[1000];
|
||||||
static char name[1000];
|
static char name[1000];
|
||||||
@ -101,6 +102,8 @@ static void check_line(char *line, int len)
|
|||||||
|
|
||||||
static char * cleanup_subject(char *subject)
|
static char * cleanup_subject(char *subject)
|
||||||
{
|
{
|
||||||
|
if (keep_subject)
|
||||||
|
return subject;
|
||||||
for (;;) {
|
for (;;) {
|
||||||
char *p;
|
char *p;
|
||||||
int len, remove;
|
int len, remove;
|
||||||
@ -242,8 +245,20 @@ static void usage(void)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char mailinfo_usage[] =
|
||||||
|
"git-mailinfo [-k] msg patch <mail >info";
|
||||||
int main(int argc, char ** argv)
|
int main(int argc, char ** argv)
|
||||||
{
|
{
|
||||||
|
while (1 < argc && argv[1][0] == '-') {
|
||||||
|
if (!strcmp(argv[1], "-k"))
|
||||||
|
keep_subject = 1;
|
||||||
|
else {
|
||||||
|
fprintf(stderr, "usage: %s\n", mailinfo_usage);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
argc--; argv++;
|
||||||
|
}
|
||||||
|
|
||||||
if (argc != 3)
|
if (argc != 3)
|
||||||
usage();
|
usage();
|
||||||
cmitmsg = fopen(argv[1], "w");
|
cmitmsg = fopen(argv[1], "w");
|
||||||
|
Reference in New Issue
Block a user