Merge branch 'cc/trailers-corner-case-fix'
authorJunio C Hamano <gitster@pobox.com>
Fri, 28 Aug 2015 19:32:17 +0000 (12:32 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 28 Aug 2015 19:32:17 +0000 (12:32 -0700)
"interpret-trailers" helper mistook a single-liner log message that
has a colon as the end of existing trailer.

* cc/trailers-corner-case-fix:
trailer: retitle a test and correct an in-comment message
trailer: ignore first line of message

t/t7513-interpret-trailers.sh
trailer.c
index bd0ab4675089b54c336ccc9590c4b65bbd37138d..9577b4effb05904f9f6b29b4321b103ebdd52e7f 100755 (executable)
@@ -93,12 +93,25 @@ test_expect_success 'with config option on the command line' '
                Acked-by: Johan
                Reviewed-by: Peff
        EOF
-       echo "Acked-by: Johan" |
+       { echo; echo "Acked-by: Johan"; } |
        git -c "trailer.Acked-by.ifexists=addifdifferent" interpret-trailers \
                --trailer "Reviewed-by: Peff" --trailer "Acked-by: Johan" >actual &&
        test_cmp expected actual
 '
 
+test_expect_success 'with only a title in the message' '
+       cat >expected <<-\EOF &&
+               area: change
+
+               Reviewed-by: Peff
+               Acked-by: Johan
+       EOF
+       echo "area: change" |
+       git interpret-trailers --trailer "Reviewed-by: Peff" \
+               --trailer "Acked-by: Johan" >actual &&
+       test_cmp expected actual
+'
+
 test_expect_success 'with config setup' '
        git config trailer.ack.key "Acked-by: " &&
        cat >expected <<-\EOF &&
index 4b14a567b418acd3181fcf6e37f246c91d60eb60..b8088687d407eaafd6ac3f5680cebb2fe64dc80b 100644 (file)
--- a/trailer.c
+++ b/trailer.c
@@ -740,8 +740,10 @@ static int find_trailer_start(struct strbuf **lines, int count)
        /*
         * Get the start of the trailers by looking starting from the end
         * for a line with only spaces before lines with one separator.
+        * The first line must not be analyzed as the others as it
+        * should be either the message title or a blank line.
         */
-       for (start = count - 1; start >= 0; start--) {
+       for (start = count - 1; start >= 1; start--) {
                if (lines[start]->buf[0] == comment_line_char)
                        continue;
                if (contains_only_spaces(lines[start]->buf)) {