--summary is per author --count counts all

Signed-off-by: Lawrence Siebert <lawrencesieb...@gmail.com>
---
 builtin/shortlog.c | 14 +++++++++-----
 shortlog.h         |  1 +
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index c0bab6a..4b79dc8 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -226,8 +226,10 @@ int cmd_shortlog(int argc, const char **argv, const char 
*prefix)
        int nongit = !startup_info->have_repository;
 
        static const struct option options[] = {
+                OPT_BOOL('N', "count", &log.show_count,
+                       N_("display the total number of commits for all 
authors")),
                OPT_BOOL('n', "numbered", &log.sort_by_number,
-                        N_("sort output according to the number of commits per 
author")),
+                        N_("Sort output according to the number of commits per 
author")),
                OPT_BOOL('s', "summary", &log.summary,
                         N_("Suppress commit descriptions, only provides commit 
count")),
                OPT_BOOL('e', "email", &log.email,
@@ -290,8 +292,8 @@ static void add_wrapped_shortlog_msg(struct strbuf *sb, 
const char *s,
 void shortlog_output(struct shortlog *log)
 {
        int i, j;
+  unsigned int count = 0;
        struct strbuf sb = STRBUF_INIT;
-
        if (log->sort_by_number)
                qsort(log->list.items, log->list.nr, sizeof(struct 
string_list_item),
                        compare_by_number);
@@ -300,7 +302,9 @@ void shortlog_output(struct shortlog *log)
 
                if (log->summary) {
                        printf("%6d\t%s\n", onelines->nr, 
log->list.items[i].string);
-               } else {
+               } else if (log->show_count) {
+        count += onelines->nr;
+    } else {
                        printf("%s (%d):\n", log->list.items[i].string, 
onelines->nr);
                        for (j = onelines->nr - 1; j >= 0; j--) {
                                const char *msg = onelines->items[j].string;
@@ -315,13 +319,13 @@ void shortlog_output(struct shortlog *log)
                        }
                        putchar('\n');
                }
-
                onelines->strdup_strings = 1;
                string_list_clear(onelines, 0);
                free(onelines);
                log->list.items[i].util = NULL;
        }
-
+  if (log->show_count) 
+    printf("%d\n", count);
        strbuf_release(&sb);
        log->list.strdup_strings = 1;
        string_list_clear(&log->list, 1);
diff --git a/shortlog.h b/shortlog.h
index de4f86f..57797b7 100644
--- a/shortlog.h
+++ b/shortlog.h
@@ -8,6 +8,7 @@ struct shortlog {
        int summary;
        int wrap_lines;
        int sort_by_number;
+       int show_count;
        int wrap;
        int in1;
        int in2;
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to