Junio C Hamano <gitster@xxxxxxxxx> writes: > Nick Andrew <nick@xxxxxxxxxxxxxxx> writes: > ... >> After fix: > > Thanks for noticing, but this replaces one breakage with another. > > Your new behaviour is a new "tell me if it is an empty set" option, and it > means quite different thing from what --quiet does. And here is how I would do it if I were interested in such a feature. -- >8 -- rev-list --check-empty This new option squelches the output entirely and signals if the specified set is empty by its exit status. E.g. $ git rev-list --check-empty HEAD..HEAD will exit with a non-zero status, and $ git rev-list --check-empty HEAD^..HEAD will exit with zero status. --- builtin-rev-list.c | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletions(-) diff --git a/builtin-rev-list.c b/builtin-rev-list.c index 507201e..4f9cce9 100644 --- a/builtin-rev-list.c +++ b/builtin-rev-list.c @@ -52,6 +52,7 @@ static const char rev_list_usage[] = static struct rev_info revs; +static int check_empty; static int bisect_list; static int show_timestamp; static int hdr_termination; @@ -161,6 +162,8 @@ static void show_commit(struct commit *commit) static void finish_commit(struct commit *commit) { + if (check_empty) + exit(0); if (commit->parents) { free_commit_list(commit->parents); commit->parents = NULL; @@ -171,6 +174,8 @@ static void finish_commit(struct commit *commit) static void finish_object(struct object_array_entry *p) { + if (check_empty) + exit(0); if (p->item->type == OBJ_BLOB && !has_sha1_file(p->item->sha1)) die("missing blob object '%s'", sha1_to_hex(p->item->sha1)); } @@ -593,6 +598,10 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) for (i = 1 ; i < argc; i++) { const char *arg = argv[i]; + if (!strcmp(arg, "--check-empty")) { + check_empty = 1; + continue; + } if (!strcmp(arg, "--header")) { revs.verbose_header = 1; continue; @@ -650,6 +659,9 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) if (prepare_revision_walk(&revs)) die("revision walk setup failed"); + if (check_empty) + quiet = 1; + if (revs.tree_objects) mark_edges_uninteresting(revs.commits, &revs, show_edge); @@ -699,6 +711,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) traverse_commit_list(&revs, quiet ? finish_commit : show_commit, quiet ? finish_object : show_object); - + if (check_empty) + exit(1); return 0; } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html