X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=rev-list.c;h=0d3c7741a59254f62a135a3bd749e38e1b8dfe71;hb=8904591a9b7be14e14cb91bd4de2014f9c520710;hp=fb75c22bc7c88741758069977afb706f44758cdc;hpb=6da4016aea2dc5bf311fea160bd8ef96ca82b999;p=git.git diff --git a/rev-list.c b/rev-list.c index fb75c22b..0d3c7741 100644 --- a/rev-list.c +++ b/rev-list.c @@ -15,10 +15,14 @@ static const char rev_list_usage[] = " --max-count=nr\n" " --max-age=epoch\n" " --min-age=epoch\n" + " --bisect\n" + " --objects\n" + " --unpacked\n" " --header\n" " --pretty\n" " --merge-order [ --show-breaks ]"; +static int unpacked = 0; static int bisect_list = 0; static int tag_objects = 0; static int tree_objects = 0; @@ -59,7 +63,8 @@ static void show_commit(struct commit *commit) static char pretty_header[16384]; pretty_print_commit(commit_format, commit->buffer, ~0, pretty_header, sizeof(pretty_header)); printf("%s%c", pretty_header, hdr_termination); - } + } + fflush(stdout); } static int filter_commit(struct commit * commit) @@ -318,6 +323,8 @@ static struct commit_list *limit_list(struct commit_list *list) struct commit *commit = pop_most_recent_commit(&list, SEEN); struct object *obj = &commit->object; + if (unpacked && has_sha1_pack(obj->sha1)) + obj->flags |= UNINTERESTING; if (obj->flags & UNINTERESTING) { mark_parents_uninteresting(commit); if (everybody_uninteresting(list)) @@ -377,7 +384,7 @@ static struct commit *get_commit_reference(const char *name, unsigned int flags) if (object->type == tree_type) { struct tree *tree = (struct tree *)object; if (!tree_objects) - die("%s is a tree object, not a commit", name); + return NULL; if (flags & UNINTERESTING) { mark_tree_uninteresting(tree); return NULL; @@ -392,7 +399,7 @@ static struct commit *get_commit_reference(const char *name, unsigned int flags) if (object->type == blob_type) { struct blob *blob = (struct blob *)object; if (!blob_objects) - die("%s is a blob object, not a commit", name); + return NULL; if (flags & UNINTERESTING) { mark_blob_uninteresting(blob); return NULL; @@ -450,11 +457,16 @@ int main(int argc, char **argv) blob_objects = 1; continue; } - if (!strncmp(arg, "--merge-order", 13)) { + if (!strcmp(arg, "--unpacked")) { + unpacked = 1; + limited = 1; + continue; + } + if (!strcmp(arg, "--merge-order")) { merge_order = 1; continue; } - if (!strncmp(arg, "--show-breaks", 13)) { + if (!strcmp(arg, "--show-breaks")) { show_breaks = 1; continue; } @@ -470,7 +482,7 @@ int main(int argc, char **argv) commit = get_commit_reference(arg, flags); if (!commit) continue; - commit_list_insert(commit, &list); + insert_by_date(&list, commit); } if (!merge_order) {