summaryrefslogtreecommitdiff
path: root/builtin/rev-list.c
diff options
context:
space:
mode:
authorThomas Rast <trast@student.ethz.ch>2010-06-10 13:47:23 +0200
committerJunio C Hamano <gitster@pobox.com>2010-06-12 09:39:06 -0700
commitf69c501832ecd6880602c55565508e70c3a013d5 (patch)
tree0249f7780dd2aac4023e4f44c7670188c7778650 /builtin/rev-list.c
parent3499cb1ae7b97ce8f67879156e2014e31dd985b6 (diff)
downloadgit-f69c501832ecd6880602c55565508e70c3a013d5.tar.gz
rev-list: introduce --count option
Add a --count option that, instead of actually listing the commits, merely counts them. This is mostly geared towards script use, and to this end it acts specially when used with --left-right: it outputs the left and right counts separately. Previously, scripts would have to run a shell loop or small inline script over to achieve the same. (Without --left-right, a simple |wc -l does the job.) Signed-off-by: Thomas Rast <trast@student.ethz.ch> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/rev-list.c')
-rw-r--r--builtin/rev-list.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index 51ceb19d88..efe9360e2f 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -50,6 +50,15 @@ static void show_commit(struct commit *commit, void *data)
graph_show_commit(revs->graph);
+ if (revs->count) {
+ if (commit->object.flags & SYMMETRIC_LEFT)
+ revs->count_left++;
+ else
+ revs->count_right++;
+ finish_commit(commit, data);
+ return;
+ }
+
if (info->show_timestamp)
printf("%lu ", commit->date);
if (info->header_prefix)
@@ -400,5 +409,12 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
quiet ? finish_object : show_object,
&info);
+ if (revs.count) {
+ if (revs.left_right)
+ printf("%d\t%d\n", revs.count_left, revs.count_right);
+ else
+ printf("%d\n", revs.count_left + revs.count_right);
+ }
+
return 0;
}