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.
This commit is contained in:
parent
cc29f73285
commit
81f2bb1f54
86
rev-list.c
86
rev-list.c
@ -13,6 +13,54 @@ static const char rev_list_usage[] =
|
|||||||
" --header\n"
|
" --header\n"
|
||||||
" --pretty";
|
" --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)
|
static void mark_parents_uninteresting(struct commit *commit)
|
||||||
{
|
{
|
||||||
struct commit_list *parents = commit->parents;
|
struct commit_list *parents = commit->parents;
|
||||||
@ -42,12 +90,7 @@ int main(int argc, char **argv)
|
|||||||
unsigned char sha1[2][20];
|
unsigned char sha1[2][20];
|
||||||
struct commit_list *list = NULL;
|
struct commit_list *list = NULL;
|
||||||
struct commit *commit, *end;
|
struct commit *commit, *end;
|
||||||
int i, verbose_header = 0, show_parents = 0, pretty_print = 0;
|
int i;
|
||||||
int hdr_termination = 0;
|
|
||||||
const char *prefix = "";
|
|
||||||
unsigned long max_age = -1;
|
|
||||||
unsigned long min_age = -1;
|
|
||||||
int max_count = -1;
|
|
||||||
|
|
||||||
nr_sha = 0;
|
nr_sha = 0;
|
||||||
for (i = 1 ; i < argc; i++) {
|
for (i = 1 ; i < argc; i++) {
|
||||||
@ -119,35 +162,6 @@ int main(int argc, char **argv)
|
|||||||
list = newlist;
|
list = newlist;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (list) {
|
show_commit_list(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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user