[PATCH] git-am: add option to extract email Message-Id: tag into commit log
From: Avi Kivity <hidden>
Date: 2016-06-15 23:01:47
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
Some workflows prefer to track exactly which email message was used to generate a commit. This can be used, for example, to generate an automated acknowledgement when a patch is committed as a response to the patch email, or as a reference to the thread which introduced the patch. Support this by adding a --message-id option (abbreviated as -m) to git-am, which will then extract the message ID and append it to the email commit log. Signed-off-by: Avi Kivity <redacted> --- Documentation/git-am.txt | 6 ++++++ builtin/mailinfo.c | 2 +- git-am.sh | 10 +++++++++- 3 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index 9adce37..8a251a1 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt@@ -15,6 +15,7 @@ SYNOPSIS [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>] [--exclude=<path>] [--include=<path>] [--reject] [-q | --quiet] [--[no-]scissors] [-S[<keyid>]] [--patch-format=<format>] + [--message-id] [(<mbox> | <Maildir>)...] 'git am' (--continue | --skip | --abort)
@@ -121,6 +122,11 @@ default. You can use `--no-utf8` to override this. user to lie about the author date by using the same value as the committer date. +-m:: +--message-id:: + Extract the Message-Id: header from the e-mail and + append it to the commit message's tag stanza. + --skip:: Skip the current patch. This is only meaningful when restarting an aborted patch.
diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c
index cf11c8d..f1e1fed 100644
--- a/builtin/mailinfo.c
+++ b/builtin/mailinfo.c@@ -278,7 +278,7 @@ static void cleanup_space(struct strbuf *sb) static void decode_header(struct strbuf *line); static const char *header[MAX_HDR_PARSED] = { - "From","Subject","Date", + "From","Subject","Date","Message-Id" }; static inline int cmp_header(const struct strbuf *line, const char *hdr)
diff --git a/git-am.sh b/git-am.sh
index ee61a77..22799ff 100755
--- a/git-am.sh
+++ b/git-am.sh@@ -39,6 +39,7 @@ committer-date-is-author-date lie about committer date ignore-date use current timestamp for author date rerere-autoupdate update the index with reused conflict resolution if possible S,gpg-sign? GPG-sign commits +m,message-id copy the Message-Id: header to the commit's tag stanza rebasing* (internal use for git-rebase)" . git-sh-setup
@@ -371,7 +372,7 @@ split_patches () { prec=4 dotest="$GIT_DIR/rebase-apply" sign= utf8=t keep= keepcr= skip= interactive= resolved= rebasing= abort= -resolvemsg= resume= scissors= no_inbody_headers= +resolvemsg= resume= scissors= no_inbody_headers= message_id= git_apply_opt= committer_date_is_author_date= ignore_date=
@@ -442,6 +443,8 @@ it will be removed. Please do not use it anymore." gpg_sign_opt=-S ;; --gpg-sign=*) gpg_sign_opt="-S${1#--gpg-sign=}" ;; + -m|--message-id) + message_id=t ;; --) shift; break ;; *)
@@ -565,6 +568,7 @@ Use \"git am --abort\" to remove it.")" echo " $git_apply_opt" >"$dotest/apply-opt" echo "$threeway" >"$dotest/threeway" echo "$sign" >"$dotest/sign" + echo "$message_id" > "$dotest/message-id" echo "$utf8" >"$dotest/utf8" echo "$keep" >"$dotest/keep" echo "$scissors" >"$dotest/scissors"
@@ -757,6 +761,10 @@ To restore the original branch and stop patching run \"\$cmdline --abort\"." then cat "$dotest/msg-clean" fi + if test 't' == "$message_id" + then + grep ^Message-Id: "$dotest/info" + fi if test '' != "$ADD_SIGNOFF" then echo "$ADD_SIGNOFF"
--
1.9.3