Introduce the X-Change-ID header to emails prepared by git (i.e. via format-patch, send-email). This allows tools which work with those emails (e.g. patchwork, sourcehut) to meaningfully integrate with tools that assign change IDs to commits. With some follow-up work, this is also the first step towards ensuring that those change IDs are preserved through from git-send-email to git-am as a change moves through its review lifecycle. Signed-off-by: Drew DeVault <drew@xxxxxxxxxxxx> --- v2 is unchanged from v1. One remark that occurs to me upon spinning v2 is that I'm not sure how to test this behavior. There is no obvious way to cause git upstream to produce a commit with a change-id -- presently these are only ever added by third-party tools. pretty.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pretty.c b/pretty.c index 0bc8ad8a9a..70fba7b023 100644 --- a/pretty.c +++ b/pretty.c @@ -2045,7 +2045,7 @@ static void pp_header(struct pretty_print_context *pp, int parents_shown = 0; for (;;) { - const char *name, *line = *msg_p; + const char *name, *change_id, *line = *msg_p; int linelen = get_one_line(*msg_p); if (!linelen) @@ -2089,6 +2089,11 @@ static void pp_header(struct pretty_print_context *pp, strbuf_grow(sb, linelen + 80); pp_user_info(pp, "Commit", sb, name, encoding); } + if (skip_prefix(line, "change-id ", &change_id) && + cmit_fmt_is_mail(pp->fmt)) { + strbuf_addf(sb, "X-Change-ID: %.*s\n", + linelen - 11, change_id); + } } } -- 2.50.0