Linux maintainer tooling and workflows
 help / color / mirror / Atom feed
From: Quentin Schulz <quentin.schulz@theobroma-systems.com>
To: "Kernel.org Tools" <tools@linux.kernel.org>
Cc: Quentin Schulz <quentin.schulz@theobroma-systems.com>,
	Konstantin Ryabitsev <konstantin@linuxfoundation.org>
Subject: [PATCH] git_range_to_patches: actually add to/cc headers from cover letter to single-commit series
Date: Mon, 14 Nov 2022 13:47:56 +0100	[thread overview]
Message-ID: <20221114-prep-format-patch-single-patch-to-cc-v1-0-e8dddbd07096@theobroma-systems.com> (raw)

The intent of the original code was to copy the Cc and To headers from
the cover letter, previously added with b4 prep --auto-to-cc. However,
those are added in the commit log which means a newline is inserted
between the subject header and the start of the commit log, "breaking"
the mail parsing because the rest is assumed to be the body of the mail.

Since the To: and Cc: lines are assumed to be in-body, and therefore not
parsed by the mail backend, they cannot be fetched with mail.get('To')
since the header isn't actually set.

Instead, let's use the Cc and To fields returned by get_body_parts of
the covermsg into ctrailers list of LoreTrailer and then add the ones
that are supposed to be To or Cc headers to the single-commit patch
headers.

Fixes: 6c215d83473d ("ez: don't send a cover letter for a 1-patch series")
Fixes: c748abf6ad2a ("ez: don't send a cover letter for a 1-patch series") #v0.10.1
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
---
git_range_to_patches: actually add to/cc headers from cover letter to single-commit series

I remember also having issues with multiple-commits patch series where the to/cc
fields of the cover wouldn't be applied to the rest of the series, but that'll
be another commit/bug report if I find the issue.

Finally, this probably wasn't detected because git-send-email is capable of
adding the Cc: fields in the "snipped" section of a patch (---) even if not in
the headers but not the To: fields.

To: "Kernel.org Tools" <tools@linux.kernel.org>
Cc: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
---
 b4/__init__.py | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/b4/__init__.py b/b4/__init__.py
index f5bbc53..61ae2c5 100644
--- a/b4/__init__.py
+++ b/b4/__init__.py
@@ -2779,13 +2779,11 @@ def git_range_to_patches(gitdir: Optional[str], start: str, end: str,
 
             pbody = LoreMessage.rebuild_message(pheaders, pmessage, ptrailers, newbasement, csignature)
             pmsg.set_payload(pbody, charset='utf-8')
+
             # Add any To: and Cc: headers from the cover_message
-            toh = covermsg.get('To')
-            if toh:
-                pmsg.add_header('To', toh)
-            cch = covermsg.get('Cc')
-            if cch:
-                pmsg.add_header('Cc', cch)
+            for ctrailer in list(ctrailers):
+                if ctrailer.name in ('To', 'Cc'):
+                    pmsg.add_header(ctrailer.name, ctrailer.value)
             startfrom = 0
         else:
             patches.insert(0, (None, covermsg))

---
base-commit: 287477e9e0149b42e444471da9dca629ebacf2e1
change-id: 20221114-prep-format-patch-single-patch-to-cc-2a878158d50b

Best regards,
-- 
Quentin Schulz <quentin.schulz@theobroma-systems.com>

                 reply	other threads:[~2022-11-14 12:48 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221114-prep-format-patch-single-patch-to-cc-v1-0-e8dddbd07096@theobroma-systems.com \
    --to=quentin.schulz@theobroma-systems.com \
    --cc=konstantin@linuxfoundation.org \
    --cc=tools@linux.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).