Message ID | 20200629141104.2522011-1-aquini@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] send-email: restore --in-reply-to superseding behavior | expand |
On Mon, Jun 29, 2020 at 10:11:04AM -0400, Rafael Aquini wrote: > > This patch fixes the aformentioned issue, by bringing --in-reply-to's old > overriding behavior back. > > Fixes: 256be1d3f0 (send-email: avoid duplicate In-Reply-To/References, 2018-04-17) the following test case could be squashed on top to make the regression more visible IMHO (it at least pass when applied on top of v2.17.1 and also ra/send-email-in-reply-to-from-command-line-wins) --- 8< --- t/t9001-send-email.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh index 90f61c3400..ec261085ec 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh @@ -42,7 +42,8 @@ clean_fake_sendmail () { } test_expect_success $PREREQ 'Extract patches' ' - patches=$(git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1) + patches=$(git format-patch -s --cc="One <one@example.com>" --cc=two@example.com -n HEAD^1) && + threaded_patches=$(git format-patch -o threaded -s --in-reply-to="format" HEAD^1) ' # Test no confirm early to ensure remaining tests will not hang @@ -1219,6 +1220,17 @@ test_expect_success $PREREQ 'threading but no chain-reply-to' ' grep "In-Reply-To: " stdout ' +test_expect_success $PREREQ 'override in-reply-to if no threading' ' + git send-email \ + --dry-run \ + --from="Example <nobody@example.com>" \ + --to=nobody@example.com \ + --no-thread \ + --in-reply-to="override" \ + $threaded_patches >stdout && + grep "In-Reply-To: <override>" stdout +' + test_expect_success $PREREQ 'sendemail.to works' ' git config --replace-all sendemail.to "Somebody <somebody@ex.com>" && git send-email \ base-commit: 096547052491426a29e040a5bd94d7f8a4cab8ac --- >8 --- > diff --git a/git-send-email.perl b/git-send-email.perl > index dc95656f75..36c47bae1d 100755 > --- a/git-send-email.perl > +++ b/git-send-email.perl > @@ -1699,10 +1699,14 @@ sub process_file { > $xfer_encoding = $1 if not defined $xfer_encoding; > } > elsif (/^In-Reply-To: (.*)/i) { > - $in_reply_to = $1; > + if (!$initial_in_reply_to || $thread) { > + $in_reply_to = $1; > + } > } > elsif (/^References: (.*)/i) { > - $references = $1; > + if (!$initial_in_reply_to || $thread) { > + $references = $1; > + } > } > elsif (!/^Date:\s/i && /^[-A-Za-z]+:\s+\S/) { > push @xh, $_; in both cases, doing `!defined $initial_in_reply_to` might seem like a more consistent option. Carlo
diff --git a/git-send-email.perl b/git-send-email.perl index dc95656f75..36c47bae1d 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1699,10 +1699,14 @@ sub process_file { $xfer_encoding = $1 if not defined $xfer_encoding; } elsif (/^In-Reply-To: (.*)/i) { - $in_reply_to = $1; + if (!$initial_in_reply_to || $thread) { + $in_reply_to = $1; + } } elsif (/^References: (.*)/i) { - $references = $1; + if (!$initial_in_reply_to || $thread) { + $references = $1; + } } elsif (!/^Date:\s/i && /^[-A-Za-z]+:\s+\S/) { push @xh, $_;
git send-email --in-reply-to= fails to override In-Reply-To email headers, if they're present in the output of format-patch, even when explicitly told to do so by the option --no-thread, which breaks the contract of the command line switch option, per its man page. " --in-reply-to=<identifier> Make the first mail (or all the mails with --no-thread) appear as a reply to the given Message-Id, which avoids breaking threads to provide a new patch series. " This patch fixes the aformentioned issue, by bringing --in-reply-to's old overriding behavior back. Fixes: 256be1d3f0 (send-email: avoid duplicate In-Reply-To/References, 2018-04-17) Signed-off-by: Rafael Aquini <aquini@redhat.com> --- v2 changelog: * conform to the command manual page, when send-email threading is requested git-send-email.perl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)