git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] git-send-email.perl: fix In-Reply-To for second and subsequent patches

From
Antonio Ospite <ospite@studenti.unina.it>
Date
Oct 19, 2010, 09:52 UTC
Message-ID
<1287481964-8883-1-git-send-email-ospite@studenti.unina.it>
In-Reply-To
<20101015095651.b75c4b54.ospite@studenti.unina.it>

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@studenti.unina.it>
---
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@example.com>" \
+		--to=nobody@example.com \
+		--thread \
+		--in-reply-to="<unique-message-id@example.com>" \
+		--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
Previous: Antonio OspiteNext: Junio C Hamano
Message 4 of 19 in “git-send-email.perl: fix In-Reply-To for second and subsequent patches”
  1. git-send-email.perl: fix In-Reply-To for second and subsequent patchesAntonio Ospite, Oct 14, 2010
  2. Jonathan NiederOct 14, 2010
  3. Antonio OspiteOct 15, 2010
  4. git-send-email.perl: fix In-Reply-To for second and subsequent patchesAntonio Ospite, Oct 19, 2010
  5. Junio C HamanoOct 19, 2010
  6. Junio C HamanoOct 19, 2010
  7. Antonio OspiteOct 19, 2010
  8. Antonio OspiteOct 26, 2010
  9. git-send-email.perl: make initial In-Reply-To apply only to first emailAntonio Ospite, Nov 5, 2010
  10. Matthieu MoyNov 5, 2010
  11. Junio C HamanoNov 9, 2010
  12. Antonio OspiteNov 10, 2010
  13. Junio C HamanoNov 10, 2010
  14. [PATCHi v4] git-send-email.perl: make initial In-Reply-To apply only to first emailAntonio Ospite, Nov 12, 2010
  15. Junio C HamanoNov 12, 2010
  16. Junio C HamanoNov 12, 2010
  17. Antonio OspiteNov 12, 2010
  18. Jonathan NiederNov 5, 2010
  19. Antonio OspiteNov 8, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.