Make second and subsequent patches appear as replies to the first patch, even when an initial In-Reply-To is supplied; this is the typical behaviour we want when we send a series with cover letter in reply to some discussion, and this is also what the man page says about the --in-reply-to option. When $initial_reply_to is asked to the user interactively it is asked as the "Message-ID to be used as In-Reply-To for the _first_ email", this makes the user think that the second and subsequent patches are not using it but are considered as replies to the first message or chained according to the --[no-]chain-reply setting. In order to achieve the old behaviour of a flat structure in reply to something the user can always use "--no-thread --in-reply-to <...>". Signed-off-by: Antonio Ospite <ospite@xxxxxxxxxxxxxxxxx> --- Changes since v1: - add more details about the interactive case in the commit message - split long line as requested by Jonathan Nieder - add a test case in t/t9001-send-email.sh, please check that, I am not comparing the strings inside '<>' is it necessary to be so strict? Note to self: remember to run 'make' before running t9001-send-email.sh :) Thanks, Antonio Ospite http://ao2.it git-send-email.perl | 3 ++- t/t9001-send-email.sh | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletions(-) diff --git a/git-send-email.perl b/git-send-email.perl index 8cc4161..bc4e318 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1313,7 +1313,8 @@ foreach my $t (@files) { # set up for the next message if ($thread && $message_was_sent && - (chain_reply_to() || !defined $reply_to || length($reply_to) == 0)) { + (chain_reply_to() || !defined $reply_to || length($reply_to) == 0 || + $message_num == 1)) { $reply_to = $message_id; if (length $references > 0) { $references .= "\n $message_id"; diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh index a298eb0..410b85f 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh @@ -295,6 +295,20 @@ test_expect_success $PREREQ 'Valid In-Reply-To when prompting' ' ! grep "^In-Reply-To: < *>" msgtxt1 ' +test_expect_success $PREREQ 'In-Reply-To in second patch with --thread' ' + clean_fake_sendmail && + git send-email \ + --from="Example <nobody@xxxxxxxxxxx>" \ + --to=nobody@xxxxxxxxxxx \ + --thread \ + --in-reply-to="<unique-message-id@xxxxxxxxxxx>" \ + --smtp-server="$(pwd)/fake.sendmail" \ + $patches $patches \ + 2>errors + # The second patch should be seen as reply to the first one + test $(sed -n -e "s/^In-Reply-To:\(.*\)/\1/p" msgtxt2) = $(sed -n -e "s/^Message-Id:\(.*\)/\1/p" msgtxt1) +' + test_expect_success $PREREQ 'setup fake editor' ' (echo "#!$SHELL_PATH" && echo "echo fake edit >>\"\$1\"" -- 1.7.2.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html