Lawrence Siebert <lawrencesiebert@xxxxxxxxx> writes: > +static void show_object(struct object *obj, > + const struct name_path *path, const char *component, > + void *cb_data) > +{ > + return; > +} It seems streange to me to have a function named show_object when it does not show anything. Maybe name it null_travers_cb to make it clear it's a callback and it does nothing? Not a strong objection though, it's only a static function. > +static void show_commit(struct commit *commit, void *data) > +{ > + struct rev_info *revs = (struct rev_info *)data; > + if (commit->object.flags & PATCHSAME) > + revs->count_same++; > + else if (commit->object.flags & SYMMETRIC_LEFT) > + revs->count_left++; > + else > + revs->count_right++; > + if (commit->parents) { > + free_commit_list(commit->parents); > + commit->parents = NULL; > + } > + free_commit_buffer(commit); > +} > + > static int cmd_log_walk(struct rev_info *rev) > { > struct commit *commit; > int saved_nrl = 0; > int saved_dcctc = 0; > > + if (rev->count) { > + prepare_revision_walk(rev); > + traverse_commit_list(rev, show_commit, show_object, rev); > + get_commit_count(rev); > + } I didn't test, but it seems this does a full graph traversal before starting the output. A very important property of "git log" is that it starts showing revisions immediately, even when ran on a very long history (it shows the first screen immediately and continues working in the background while the first page is displayed in the pager). Is it the case? If so, it should be changed. If not, perhaps explain why in the commit message. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ -- 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