adds --count from git rev-list to git log, without --use-bitmap-index
for the moment.

Signed-off-by: Lawrence Siebert <lawrencesieb...@gmail.com>
---
 builtin/log.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/builtin/log.c b/builtin/log.c
index 8781049..4aaff3a 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -25,6 +25,7 @@
 #include "version.h"
 #include "mailmap.h"
 #include "gpg-interface.h"
+#include "list-objects.h"
 
 /* Set a default date-time format for git log ("log.date" config variable) */
 static const char *default_date_mode = NULL;
@@ -317,12 +318,40 @@ static void finish_early_output(struct rev_info *rev)
        show_early_header(rev, "done", n);
 }
 
+static void show_object(struct object *obj,
+                       const struct name_path *path, const char *component,
+                       void *cb_data)
+{
+       return;
+}
+
+static void show_commit(struct commit *commit, void *data)
+{
+       struct rev_info *revs = (struct rev_info *)data;
+       if (commit->object.flags & PATCHSAME)
+               revs->count_same++;
+       else if (commit->object.flags & SYMMETRIC_LEFT)
+               revs->count_left++;
+       else
+               revs->count_right++;
+       if (commit->parents) {
+               free_commit_list(commit->parents);
+               commit->parents = NULL;
+       }
+       free_commit_buffer(commit);
+}
+
 static int cmd_log_walk(struct rev_info *rev)
 {
        struct commit *commit;
        int saved_nrl = 0;
        int saved_dcctc = 0;
 
+       if (rev->count) {
+               prepare_revision_walk(rev);
+               traverse_commit_list(rev, show_commit, show_object, rev);
+               get_commit_count(rev);
+       }
        if (rev->early_output)
                setup_early_output(rev);
 
-- 
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