# [PATCH] send-email: don't duplicate Reply-to: in intro message

3 messages from 2025-09-17 to 2025-09-17. Participants: NeilBrown, Eric Sunshine, Junio C Hamano.
Thread: https://gitlist.dev/t/64159

## NeilBrown, 2025-09-17 06:32

Subject: [PATCH] send-email: don't duplicate Reply-to: in intro message
Message-ID: <175809074627.1696783.67425889158412786@noble.neil.brown.name>
URL: https://gitlist.dev/e/175809074627.1696783.67425889158412786%40noble.neil.brown.name

```

From: NeilBrown <neil@brown.name>

If I run

  git send-email --compose --reply-to 'ME <my@address.net>' .....

and edit the intro message, then it will get two copies of the Reply-To
field.  gmail.com rejects such messages.

This happens because send-email reads the edited message examining the
headers.  For recognised headers the content is extract to use in
constructing the final message and for possible inclusion in the patch
emails.  Unrecognised headers are gathered (in @xh) to be passed though
uninterpreted.

Unfortunately "Reply-To" is not recognised in this process so it is
added to @xh as an uninterpreted header, but also generated from the
$reply_to variable in gen_header(), resulting in two copies

So:

Add parsing to the loop in pre_process_file() to recognise a Reply-to
header and to store the result in $reply_to.  This means that the
intro message will not get a second header and also means that
any changes made to the Reply-To header during editing will be
incorporated in the $reply_to variable and so included in all the
generated email messages.

Signed-off-by: NeilBrown <neil@brown.name>
---
 git-send-email.perl | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/git-send-email.perl b/git-send-email.perl
index 437f8ac46a85..e2248c223119 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1931,6 +1931,9 @@ sub pre_process_file {
 					$in_reply_to = $1;
 				}
 			}
+			elsif (/^Reply-To: (.*)/i) {
+				$reply_to = $1;
+			}
 			elsif (/^References: (.*)/i) {
 				if (!$initial_in_reply_to || $thread) {
 					$references = $1;
-- 
2.50.0.107.gf914562f5916.dirty


```

## Eric Sunshine, 2025-09-17 06:56

Subject: Re: [PATCH] send-email: don't duplicate Reply-to: in intro message
Message-ID: <CAPig+cSZ5aazWp9vacw7FBX4-b+PAKwRY-WfJL2HhjLOA3NUiw@mail.gmail.com>
URL: https://gitlist.dev/e/CAPig%2BcSZ5aazWp9vacw7FBX4-b%2BPAKwRY-WfJL2HhjLOA3NUiw%40mail.gmail.com
In-Reply-To: <175809074627.1696783.67425889158412786@noble.neil.brown.name>

```
On Wed, Sep 17, 2025 at 2:33 AM NeilBrown <neilb@ownmail.net> wrote:
> If I run
>
>   git send-email --compose --reply-to 'ME <my@address.net>' .....
>
> and edit the intro message, then it will get two copies of the Reply-To
> field.  gmail.com rejects such messages.
>
> This happens because send-email reads the edited message examining the
> headers.  For recognised headers the content is extract to use in
> constructing the final message and for possible inclusion in the patch
> emails.  Unrecognised headers are gathered (in @xh) to be passed though
> uninterpreted.

s/extract/extracted/
s/though/through/

> Unfortunately "Reply-To" is not recognised in this process so it is
> added to @xh as an uninterpreted header, but also generated from the
> $reply_to variable in gen_header(), resulting in two copies
>
> So:
>
> Add parsing to the loop in pre_process_file() to recognise a Reply-to
> header and to store the result in $reply_to.  This means that the
> intro message will not get a second header and also means that
> any changes made to the Reply-To header during editing will be
> incorporated in the $reply_to variable and so included in all the
> generated email messages.
>
> Signed-off-by: NeilBrown <neil@brown.name>

```

## Junio C Hamano, 2025-09-17 14:05

Subject: Re: [PATCH] send-email: don't duplicate Reply-to: in intro message
Message-ID: <xmqqfrcli38p.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqfrcli38p.fsf%40gitster.g
In-Reply-To: <175809074627.1696783.67425889158412786@noble.neil.brown.name>

```
NeilBrown <neilb@ownmail.net> writes:

> Add parsing to the loop in pre_process_file() to recognise a Reply-to
> header and to store the result in $reply_to.  This means that the
> intro message will not get a second header and also means that
> any changes made to the Reply-To header during editing will be
> incorporated in the $reply_to variable and so included in all the
> generated email messages.
>
> Signed-off-by: NeilBrown <neil@brown.name>
> ---
>  git-send-email.perl | 3 +++
>  1 file changed, 3 insertions(+)

Makes sense.

Just FYI for any future contributions, it is customary to mark the
second iteration as [PATCH v2] on the subject and to make the
message a direct reply (with "Reply-To") to the previous iteration,
to help people find how the patch evolved in the list archives like
https://lore.kernel.org/git/

Obviously no need to redo this patch only for that, but if you need
some other changes, sending v3 as a reply to the message I am
responding to would be a good thing to do.

Thanks.

>
> diff --git a/git-send-email.perl b/git-send-email.perl
> index 437f8ac46a85..e2248c223119 100755
> --- a/git-send-email.perl
> +++ b/git-send-email.perl
> @@ -1931,6 +1931,9 @@ sub pre_process_file {
>  					$in_reply_to = $1;
>  				}
>  			}
> +			elsif (/^Reply-To: (.*)/i) {
> +				$reply_to = $1;
> +			}
>  			elsif (/^References: (.*)/i) {
>  				if (!$initial_in_reply_to || $thread) {
>  					$references = $1;

```
