# [PATCH] send-email: Use To: headers in patch files

3 messages from 2010-09-28 to 2010-09-29. Participants: Stephen Boyd, Ævar Arnfjörð Bjarmason.
Thread: https://gitlist.dev/t/25265

## Stephen Boyd, 2010-09-28 08:02

Subject: [PATCH] send-email: Use To: headers in patch files
Message-ID: <1285660964-26758-1-git-send-email-bebarino@gmail.com>
URL: https://gitlist.dev/e/1285660964-26758-1-git-send-email-bebarino%40gmail.com

```
It's a minor annoyance when you take the painstaking time to setup To:
headers for each patch in a large series, and then go out to send the
series with git-send-email and watch git ignore the To: headers in the
patch files.

Therefore, always add To: headers from a patch file to the To: headers
for that message. Keep the prompt for the blanket To: header so as to
not break scripts (and user expectations). This means even if a patch
has a To: header, git will prompt for the To: address. Otherwise, we'll
need to introduce interface breakage to either request the header for
each patch missing a To: header or default the header to whatever To:
address is found first (be it in a patch or from user input). Both of
these options don't seem very obvious/useful.

Reported-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Tested-by: Viresh Kumar <viresh.kumar@st.com>
---

This is a resend of a patch a few weeks ago with some added tests.

 git-send-email.perl   |    7 +++++++
 t/t9001-send-email.sh |   22 ++++++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/git-send-email.perl b/git-send-email.perl
index e1f29a7..d6028ec 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1176,6 +1176,13 @@ foreach my $t (@files) {
 					$1, $_) unless $quiet;
 				push @cc, $1;
 			}
+			elsif (/^To:\s+(.*)$/) {
+				foreach my $addr (parse_address_line($1)) {
+					printf("(mbox) Adding to: %s from line '%s'\n",
+						$addr, $_) unless $quiet;
+					push @to, sanitize_address($addr);
+				}
+			}
 			elsif (/^Cc:\s+(.*)$/) {
 				foreach my $addr (parse_address_line($1)) {
 					if (unquote_rfc2047($addr) eq $sender) {
diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 71b3df9..6bd9ea7 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -947,6 +947,28 @@ test_expect_success $PREREQ '--no-bcc overrides sendemail.bcc' '
 	! grep "RCPT TO:<other@ex.com>" stdout
 '
 
+test_expect_success $PREREQ 'patches To headers are used by default' '
+	patch=`git format-patch -1 --to="bodies@example.com"` &&
+	git send-email \
+		--dry-run \
+		--from="Example <nobody@example.com>" \
+		--smtp-server relay.example.com \
+		$patch >stdout &&
+	grep "RCPT TO:<bodies@example.com>" stdout
+'
+
+test_expect_success $PREREQ 'patches To headers are appended to' '
+	patch=`git format-patch -1 --to="bodies@example.com"` &&
+	git send-email \
+		--dry-run \
+		--from="Example <nobody@example.com>" \
+		--to=nobody@example.com \
+		--smtp-server relay.example.com \
+		$patch >stdout &&
+	grep "RCPT TO:<bodies@example.com>" stdout &&
+	grep "RCPT TO:<nobody@example.com>" stdout
+'
+
 test_expect_success $PREREQ 'setup expect' '
 cat >email-using-8bit <<EOF
 From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
-- 
1.7.3.16.g5d4d9

```

## Ævar Arnfjörð Bjarmason, 2010-09-28 14:34

Subject: Re: [PATCH] send-email: Use To: headers in patch files
Message-ID: <AANLkTimTmfORavF6pNGjC6L46_f+GOaz86jEzBPYUxF2@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTimTmfORavF6pNGjC6L46_f%2BGOaz86jEzBPYUxF2%40mail.gmail.com
In-Reply-To: <1285660964-26758-1-git-send-email-bebarino@gmail.com>

```
On Tue, Sep 28, 2010 at 08:02, Stephen Boyd <bebarino@gmail.com> wrote:

> +test_expect_success $PREREQ 'patches To headers are used by default' '
> +       patch=`git format-patch -1 --to="bodies@example.com"` &&
> +       git send-email \
> +               --dry-run \
> +               --from="Example <nobody@example.com>" \
> +               --smtp-server relay.example.com \
> +               $patch >stdout &&
> +       grep "RCPT TO:<bodies@example.com>" stdout
> +'

Why not:

    git format-patch -1 --to="bodies@example.com" &&
    test_when_finished "rm *.patch" &&
    git send-email [...] *.patch >out &&
    [...]

```

## Stephen Boyd, 2010-09-29 07:26

Subject: [PATCHv2] send-email: Use To: headers in patch files
Message-ID: <1285745204-22443-1-git-send-email-bebarino@gmail.com>
URL: https://gitlist.dev/e/1285745204-22443-1-git-send-email-bebarino%40gmail.com
In-Reply-To: <AANLkTimTmfORavF6pNGjC6L46_f+GOaz86jEzBPYUxF2@mail.gmail.com>

```
It's a minor annoyance when you take the painstaking time to setup To:
headers for each patch in a large series, and then go out to send the
series with git-send-email and watch git ignore the To: headers in the
patch files.

Therefore, always add To: headers from a patch file to the To: headers
for that message. Keep the prompt for the blanket To: header so as to
not break scripts (and user expectations). This means even if a patch
has a To: header, git will prompt for the To: address. Otherwise, we'll
need to introduce interface breakage to either request the header for
each patch missing a To: header or default the header to whatever To:
address is found first (be it in a patch or from user input). Both of
these options don't seem very obvious/useful.

Reported-by: Viresh Kumar <viresh.kumar@st.com>
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Tested-by: Viresh Kumar <viresh.kumar@st.com>
---

Changes since v1:
 - Added test_when_finished calls.

 git-send-email.perl   |    7 +++++++
 t/t9001-send-email.sh |   24 ++++++++++++++++++++++++
 2 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/git-send-email.perl b/git-send-email.perl
index e1f29a7..d6028ec 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1176,6 +1176,13 @@ foreach my $t (@files) {
 					$1, $_) unless $quiet;
 				push @cc, $1;
 			}
+			elsif (/^To:\s+(.*)$/) {
+				foreach my $addr (parse_address_line($1)) {
+					printf("(mbox) Adding to: %s from line '%s'\n",
+						$addr, $_) unless $quiet;
+					push @to, sanitize_address($addr);
+				}
+			}
 			elsif (/^Cc:\s+(.*)$/) {
 				foreach my $addr (parse_address_line($1)) {
 					if (unquote_rfc2047($addr) eq $sender) {
diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh
index 71b3df9..294e31f 100755
--- a/t/t9001-send-email.sh
+++ b/t/t9001-send-email.sh
@@ -947,6 +947,30 @@ test_expect_success $PREREQ '--no-bcc overrides sendemail.bcc' '
 	! grep "RCPT TO:<other@ex.com>" stdout
 '
 
+test_expect_success $PREREQ 'patches To headers are used by default' '
+	patch=`git format-patch -1 --to="bodies@example.com"` &&
+	test_when_finished "rm $patch" &&
+	git send-email \
+		--dry-run \
+		--from="Example <nobody@example.com>" \
+		--smtp-server relay.example.com \
+		$patch >stdout &&
+	grep "RCPT TO:<bodies@example.com>" stdout
+'
+
+test_expect_success $PREREQ 'patches To headers are appended to' '
+	patch=`git format-patch -1 --to="bodies@example.com"` &&
+	test_when_finished "rm $patch" &&
+	git send-email \
+		--dry-run \
+		--from="Example <nobody@example.com>" \
+		--to=nobody@example.com \
+		--smtp-server relay.example.com \
+		$patch >stdout &&
+	grep "RCPT TO:<bodies@example.com>" stdout &&
+	grep "RCPT TO:<nobody@example.com>" stdout
+'
+
 test_expect_success $PREREQ 'setup expect' '
 cat >email-using-8bit <<EOF
 From fe6ecc66ece37198fe5db91fa2fc41d9f4fe5cc4 Mon Sep 17 00:00:00 2001
-- 
1.7.3.16.g5d4d9

```
