From: Linus Torvalds Date: Thu, 2 Jun 2005 16:19:53 +0000 (-0700) Subject: git-rev-list: factor out the commit printing from "main()" X-Git-Tag: v0.99~385 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/81f2bb1f54b20abefa9d102ea98c4ac73d81a66d git-rev-list: factor out the commit printing from "main()" Functions that do many things are bad. We should basically just parse the arguments in main(). We're not quite there yet, but it's a step in the right direction. --- diff --git a/rev-list.c b/rev-list.c index 73b3e97452..8775b6558d 100644 --- a/rev-list.c +++ b/rev-list.c @@ -13,6 +13,54 @@ static const char rev_list_usage[] = " --header\n" " --pretty"; +static int verbose_header = 0; +static int show_parents = 0; +static int pretty_print = 0; +static int hdr_termination = 0; +static const char *prefix = ""; +static unsigned long max_age = -1; +static unsigned long min_age = -1; +static int max_count = -1; + +static void show_commit(struct commit *commit) +{ + printf("%s%s", prefix, sha1_to_hex(commit->object.sha1)); + if (show_parents) { + struct commit_list *parents = commit->parents; + while (parents) { + printf(" %s", sha1_to_hex(parents->item->object.sha1)); + parents = parents->next; + } + } + putchar('\n'); + if (verbose_header) { + const char *buf = commit->buffer; + if (pretty_print) { + static char pretty_header[16384]; + pretty_print_commit(commit->buffer, ~0, pretty_header, sizeof(pretty_header)); + buf = pretty_header; + } + printf("%s%c", buf, hdr_termination); + } +} + +static void show_commit_list(struct commit_list *list) +{ + while (list) { + struct commit *commit = pop_most_recent_commit(&list, SEEN); + + if (commit->object.flags & UNINTERESTING) + continue; + if (min_age != -1 && (commit->date > min_age)) + continue; + if (max_age != -1 && (commit->date < max_age)) + break; + if (max_count != -1 && !max_count--) + break; + show_commit(commit); + } +} + static void mark_parents_uninteresting(struct commit *commit) { struct commit_list *parents = commit->parents; @@ -42,12 +90,7 @@ int main(int argc, char **argv) unsigned char sha1[2][20]; struct commit_list *list = NULL; struct commit *commit, *end; - int i, verbose_header = 0, show_parents = 0, pretty_print = 0; - int hdr_termination = 0; - const char *prefix = ""; - unsigned long max_age = -1; - unsigned long min_age = -1; - int max_count = -1; + int i; nr_sha = 0; for (i = 1 ; i < argc; i++) { @@ -119,35 +162,6 @@ int main(int argc, char **argv) list = newlist; } - while (list) { - struct commit *commit = pop_most_recent_commit(&list, SEEN); - - if (commit->object.flags & UNINTERESTING) - continue; - if (min_age != -1 && (commit->date > min_age)) - continue; - if (max_age != -1 && (commit->date < max_age)) - break; - if (max_count != -1 && !max_count--) - break; - printf("%s%s", prefix, sha1_to_hex(commit->object.sha1)); - if (show_parents) { - struct commit_list *parents = commit->parents; - while (parents) { - printf(" %s", sha1_to_hex(parents->item->object.sha1)); - parents = parents->next; - } - } - putchar('\n'); - if (verbose_header) { - const char *buf = commit->buffer; - if (pretty_print) { - static char pretty_header[16384]; - pretty_print_commit(commit->buffer, ~0, pretty_header, sizeof(pretty_header)); - buf = pretty_header; - } - printf("%s%c", buf, hdr_termination); - } - } + show_commit_list(list); return 0; }