"Derrick Stolee via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > From: Derrick Stolee <derrickstolee@xxxxxxxxxx> > > Now that all consumers of traverse_commit_list_filtered() populate the > 'filter' member of 'struct rev_info', we can drop that parameter from > the method prototype to simplify things. In addition, the only thing > different now between traverse_commit_list_filtered() and > traverse_commit_list() is the presence of the 'omitted' parameter, which > is only non-NULL for one caller. We can consolidate these two methods by > having one call the other and use the simpler form everywhere the > 'omitted' paramter would be NULL. Nice. Modulo "paramter" -> "parameter". > > Signed-off-by: Derrick Stolee <derrickstolee@xxxxxxxxxx> > --- > builtin/pack-objects.c | 6 +++--- > builtin/rev-list.c | 2 +- > list-objects.c | 25 ++++++++----------------- > list-objects.h | 12 ++++++++++-- > pack-bitmap.c | 6 +++--- > 5 files changed, 25 insertions(+), 26 deletions(-) > > diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c > index 57f2cf49696..0432ae1e499 100644 > --- a/builtin/pack-objects.c > +++ b/builtin/pack-objects.c > @@ -3778,9 +3778,9 @@ static void get_object_list(int ac, const char **av) > > if (!fn_show_object) > fn_show_object = show_object; > - traverse_commit_list_filtered(revs.filter, &revs, > - show_commit, fn_show_object, NULL, > - NULL); > + traverse_commit_list(&revs, > + show_commit, fn_show_object, > + NULL); > > if (unpack_unreachable_expiration) { > revs.ignore_missing_links = 1; > diff --git a/builtin/rev-list.c b/builtin/rev-list.c > index 556e78aebb9..3ab727817fd 100644 > --- a/builtin/rev-list.c > +++ b/builtin/rev-list.c > @@ -733,7 +733,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) > oidset_init(&missing_objects, DEFAULT_OIDSET_SIZE); > > traverse_commit_list_filtered( > - revs.filter, &revs, show_commit, show_object, &info, > + &revs, show_commit, show_object, &info, > (arg_print_omitted ? &omitted_objects : NULL)); > > if (arg_print_omitted) { > diff --git a/list-objects.c b/list-objects.c > index 2f623f82115..9422625b39e 100644 > --- a/list-objects.c > +++ b/list-objects.c > @@ -416,22 +416,7 @@ static void do_traverse(struct traversal_context *ctx) > strbuf_release(&csp); > } > > -void traverse_commit_list(struct rev_info *revs, > - show_commit_fn show_commit, > - show_object_fn show_object, > - void *show_data) > -{ > - struct traversal_context ctx; > - ctx.revs = revs; > - ctx.show_commit = show_commit; > - ctx.show_object = show_object; > - ctx.show_data = show_data; > - ctx.filter = NULL; > - do_traverse(&ctx); > -} > - > void traverse_commit_list_filtered( > - struct list_objects_filter_options *filter_options, > struct rev_info *revs, > show_commit_fn show_commit, > show_object_fn show_object, > @@ -444,7 +429,13 @@ void traverse_commit_list_filtered( > ctx.show_object = show_object; > ctx.show_commit = show_commit; > ctx.show_data = show_data; > - ctx.filter = list_objects_filter__init(omitted, filter_options); > + if (revs->filter) > + ctx.filter = list_objects_filter__init(omitted, revs->filter); > + else > + ctx.filter = NULL; > + > do_traverse(&ctx); > - list_objects_filter__free(ctx.filter); > + > + if (ctx.filter) > + list_objects_filter__free(ctx.filter); > } > diff --git a/list-objects.h b/list-objects.h > index a952680e466..9eaf4de8449 100644 > --- a/list-objects.h > +++ b/list-objects.h > @@ -7,7 +7,6 @@ struct rev_info; > > typedef void (*show_commit_fn)(struct commit *, void *); > typedef void (*show_object_fn)(struct object *, const char *, void *); > -void traverse_commit_list(struct rev_info *, show_commit_fn, show_object_fn, void *); > > typedef void (*show_edge_fn)(struct commit *); > void mark_edges_uninteresting(struct rev_info *revs, > @@ -18,11 +17,20 @@ struct oidset; > struct list_objects_filter_options; > > void traverse_commit_list_filtered( > - struct list_objects_filter_options *filter_options, > struct rev_info *revs, > show_commit_fn show_commit, > show_object_fn show_object, > void *show_data, > struct oidset *omitted); > > +static inline void traverse_commit_list( > + struct rev_info *revs, > + show_commit_fn show_commit, > + show_object_fn show_object, > + void *show_data) > +{ > + traverse_commit_list_filtered(revs, show_commit, > + show_object, show_data, NULL); > +} > + > #endif /* LIST_OBJECTS_H */ > diff --git a/pack-bitmap.c b/pack-bitmap.c > index 613f2797cdf..cbefaedbf43 100644 > --- a/pack-bitmap.c > +++ b/pack-bitmap.c > @@ -822,9 +822,9 @@ static struct bitmap *find_objects(struct bitmap_index *bitmap_git, > show_data.bitmap_git = bitmap_git; > show_data.base = base; > > - traverse_commit_list_filtered(revs->filter, revs, > - show_commit, show_object, > - &show_data, NULL); > + traverse_commit_list(revs, > + show_commit, show_object, > + &show_data); > > revs->include_check = NULL; > revs->include_check_obj = NULL;