format-patch: thread as reply to cover letter even with in-reply-to
authorThomas Rast <trast@student.ethz.ch>
Thu, 19 Feb 2009 21:26:32 +0000 (22:26 +0100)
committerJunio C Hamano <gitster@pobox.com>
Sun, 22 Feb 2009 04:26:10 +0000 (20:26 -0800)
Currently, format-patch --thread --cover-letter --in-reply-to $parent
makes all mails, including the cover letter, a reply to $parent.
However, we would want the reader to consider the cover letter above
all the patches.

This changes the semantics so that only the cover letter is a reply to
$parent, while all the patches are formatted as replies to the cover
letter.

Signed-off-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-log.c
t/t4014-format-patch.sh

index 59671139b8d3d5f528aa31d71735fa58f9e02360..1df38e17a2a1795f6bd34aee5249fbc91a8b927b 100644 (file)
@@ -1036,12 +1036,22 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                        /* Have we already had a message ID? */
                        if (rev.message_id) {
                                /*
-                                * If we've got the ID to be a reply
-                                * to, discard the current ID;
-                                * otherwise, make everything a reply
-                                * to that.
+                                * Without --cover-letter and
+                                * --in-reply-to, make every mail a
+                                * reply to the one before.
+                                *
+                                * With --in-reply-to but no
+                                * --cover-letter, make every mail a
+                                * reply to the <reply-to>.
+                                *
+                                * With --cover-letter, make every
+                                * mail but the cover letter a reply
+                                * to the cover letter.  The cover
+                                * letter is a reply to the
+                                * --in-reply-to, if specified.
                                 */
-                               if (rev.ref_message_ids->nr > 0)
+                               if (rev.ref_message_ids->nr > 0
+                                   && (!cover_letter || rev.nr > 1))
                                        free(rev.message_id);
                                else
                                        string_list_append(rev.message_id,
index 345e6deab6155ae89ff6a24497c994f199581466..8b970c39a2713e6413510fe84f2124b76b12c9db 100755 (executable)
@@ -237,16 +237,19 @@ In-Reply-To: <1>
 References: <1>
 ---
 Message-Id: <2>
-In-Reply-To: <1>
+In-Reply-To: <0>
 References: <1>
+       <0>
 ---
 Message-Id: <3>
-In-Reply-To: <1>
+In-Reply-To: <0>
 References: <1>
+       <0>
 ---
 Message-Id: <4>
-In-Reply-To: <1>
+In-Reply-To: <0>
 References: <1>
+       <0>
 EOF
 
 test_expect_success 'thread cover-letter in-reply-to' '