trailer: ignore first line of message
authorChristian Couder <christian.couder@gmail.com>
Thu, 20 Aug 2015 21:59:15 +0000 (23:59 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Aug 2015 17:17:47 +0000 (10:17 -0700)
When looking for the start of the trailers in the message
we are passed, we should ignore the first line of the message.

The reason is that if we are passed a patch or commit message
then the first line should be the patch title.
If we are passed only trailers we can expect that they start
with an empty line that can be ignored too.

This way we can properly process commit messages that have
only one line with something that looks like a trailer, for
example like "area of code: change we made".

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t7513-interpret-trailers.sh
trailer.c
index 1efb88051af0d783dff554337d565547f946d06e..33cf4d1d2172e8bc17bbb0eaaf8532e31621cf47 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 message that contains only a title' '
+       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 a905f5c50cef099c23d8a05acefc279168de69ec..f7d271397fea3bf02d795fddcf4472ef2bd9f395 100644 (file)
--- a/trailer.c
+++ b/trailer.c
@@ -748,8 +748,9 @@ 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 start cannot be the first 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)) {