]> git.ipfire.org Git - thirdparty/git.git/commitdiff
shortlog: match both "Author:" and "author" on stdin
authorJeff King <peff@peff.net>
Mon, 18 Jan 2016 20:02:40 +0000 (15:02 -0500)
committerJunio C Hamano <gitster@pobox.com>
Tue, 19 Jan 2016 17:53:00 +0000 (09:53 -0800)
The original git-shortlog could read both the normal "git
log" output as well as "git log --format=raw". However, when
it was converted to C by b8ec592 (Build in shortlog,
2006-10-22), the trailing colon became mandatory, and we no
longer matched the raw output.

Given the amount of intervening time without any bug
reports, it's probable that nobody cares. But it's
relatively easy to fix, and the end result is hopefully more
readable than the original.

Note that this no longer matches "author: ", which we did
before, but that has never been a format generated by git.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/shortlog.c
t/t4201-shortlog.sh

index 35ebd17f80d7784f17023a4f76ac71e1317a94d0..ab25b443d0d3cfbd59e4bc32040f1f74a6656537 100644 (file)
@@ -94,8 +94,9 @@ static void read_from_stdin(struct shortlog *log)
        char author[1024], oneline[1024];
 
        while (fgets(author, sizeof(author), stdin) != NULL) {
-               if (!(author[0] == 'A' || author[0] == 'a') ||
-                   !starts_with(author + 1, "uthor: "))
+               const char *v;
+               if (!skip_prefix(author, "Author: ", &v) &&
+                   !skip_prefix(author, "author ", &v))
                        continue;
                while (fgets(oneline, sizeof(oneline), stdin) &&
                       oneline[0] != '\n')
@@ -103,7 +104,7 @@ static void read_from_stdin(struct shortlog *log)
                while (fgets(oneline, sizeof(oneline), stdin) &&
                       oneline[0] == '\n')
                        ; /* discard blanks */
-               insert_one_record(log, author + 8, oneline);
+               insert_one_record(log, v, oneline);
        }
 }
 
index 7600a3e3e8f4fab47abd68a29bb06defb6bbce02..82b23145149f059fda2bbae769a5c943efedfff2 100755 (executable)
@@ -120,6 +120,12 @@ test_expect_success !MINGW 'shortlog from non-git directory' '
        test_cmp expect out
 '
 
+test_expect_success !MINGW 'shortlog can read --format=raw output' '
+       git log --format=raw HEAD >log &&
+       GIT_DIR=non-existing git shortlog -w <log >out &&
+       test_cmp expect out
+'
+
 test_expect_success 'shortlog should add newline when input line matches wraplen' '
        cat >expect <<\EOF &&
 A U Thor (2):