]> asedeno.scripts.mit.edu Git - git.git/commitdiff
Merge branch 'ao/send-email-irt'
authorJunio C Hamano <gitster@pobox.com>
Wed, 24 Nov 2010 23:55:32 +0000 (15:55 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 Nov 2010 23:55:32 +0000 (15:55 -0800)
* ao/send-email-irt:
  git-send-email.perl: make initial In-Reply-To apply only to first email
  t9001: send-email interation with --in-reply-to and --chain-reply-to

Documentation/git-send-email.txt
git-send-email.perl
t/t9001-send-email.sh

index 05904e0e7f31896191bc10224c09d14e91372952..ebc024ae3d6f48671858197d46ba74329e6b1b3f 100644 (file)
@@ -82,11 +82,26 @@ See the CONFIGURATION section for 'sendemail.multiedit'.
        set, as returned by "git var -l".
 
 --in-reply-to=<identifier>::
-       Specify the contents of the first In-Reply-To header.
-       Subsequent emails will refer to the previous email
-       instead of this if --chain-reply-to is set.
-       Only necessary if --compose is also set.  If --compose
-       is not set, this will be prompted for.
+       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.
+       The second and subsequent emails will be sent as replies according to
+       the `--[no]-chain-reply-to` setting.
++
+So for example when `--thread` and `--no-chain-reply-to` are specified, the
+second and subsequent patches will be replies to the first one like in the
+illustration below where `[PATCH v2 0/3]` is in reply to `[PATCH 0/2]`:
++
+  [PATCH 0/2] Here is what I did...
+    [PATCH 1/2] Clean up and tests
+    [PATCH 2/2] Implementation
+    [PATCH v2 0/3] Here is a reroll
+      [PATCH v2 1/3] Clean up
+      [PATCH v2 2/3] New tests
+      [PATCH v2 3/3] Implementation
++
+Only necessary if --compose is also set.  If --compose
+is not set, this will be prompted for.
 
 --subject=<string>::
        Specify the initial subject of the email thread.
index 6e2d79ac661e3f31926c07291eddd953e0446cef..76565de2ee517f48001ffacca32e3c08320cfe38 100755 (executable)
@@ -1319,7 +1319,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";
index d1ba25205b86c3a4aeca16ec988e2ed2ecca1da2..5e48318013a5bf0e4c0ab80f2e5cad6d96887e6a 100755 (executable)
@@ -313,6 +313,49 @@ test_expect_success $PREREQ 'Valid In-Reply-To when prompting' '
        ! grep "^In-Reply-To: < *>" msgtxt1
 '
 
+test_expect_success $PREREQ 'In-Reply-To without --chain-reply-to' '
+       clean_fake_sendmail &&
+       echo "<unique-message-id@example.com>" >expect &&
+       git send-email \
+               --from="Example <nobody@example.com>" \
+               --to=nobody@example.com \
+               --no-chain-reply-to \
+               --in-reply-to="$(cat expect)" \
+               --smtp-server="$(pwd)/fake.sendmail" \
+               $patches $patches $patches \
+               2>errors &&
+       # The first message is a reply to --in-reply-to
+       sed -n -e "s/^In-Reply-To: *\(.*\)/\1/p" msgtxt1 >actual &&
+       test_cmp expect actual &&
+       # Second and subsequent messages are replies to the first one
+       sed -n -e "s/^Message-Id: *\(.*\)/\1/p" msgtxt1 >expect &&
+       sed -n -e "s/^In-Reply-To: *\(.*\)/\1/p" msgtxt2 >actual &&
+       test_cmp expect actual &&
+       sed -n -e "s/^In-Reply-To: *\(.*\)/\1/p" msgtxt3 >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success $PREREQ 'In-Reply-To with --chain-reply-to' '
+       clean_fake_sendmail &&
+       echo "<unique-message-id@example.com>" >expect &&
+       git send-email \
+               --from="Example <nobody@example.com>" \
+               --to=nobody@example.com \
+               --chain-reply-to \
+               --in-reply-to="$(cat expect)" \
+               --smtp-server="$(pwd)/fake.sendmail" \
+               $patches $patches $patches \
+               2>errors &&
+       sed -n -e "s/^In-Reply-To: *\(.*\)/\1/p" msgtxt1 >actual &&
+       test_cmp expect actual &&
+       sed -n -e "s/^Message-Id: *\(.*\)/\1/p" msgtxt1 >expect &&
+       sed -n -e "s/^In-Reply-To: *\(.*\)/\1/p" msgtxt2 >actual &&
+       test_cmp expect actual &&
+       sed -n -e "s/^Message-Id: *\(.*\)/\1/p" msgtxt2 >expect &&
+       sed -n -e "s/^In-Reply-To: *\(.*\)/\1/p" msgtxt3 >actual &&
+       test_cmp expect actual
+'
+
 test_expect_success $PREREQ 'setup fake editor' '
        (echo "#!$SHELL_PATH" &&
         echo "echo fake edit >>\"\$1\""