Derrick Stolee <dstolee@xxxxxxxxxxxxx> writes: > +int commit_contains(struct ref_filter *filter, struct commit *commit, > + struct commit_list *list, struct contains_cache *cache) This is a symbol that is used to be file-local private. Is it named appropriately in the new context, which is "globally visible throughout the system"? The convention to call into it now must be documented a lot better (e.g. how should list/cache etc are to be prepared?). > +{ > + if (filter->with_commit_tag_algo) > + return contains_tag_algo(commit, list, cache) == CONTAINS_YES; > + return is_descendant_of(commit, list); > +} > diff --git a/commit-reach.h b/commit-reach.h > index 35ec9f0ddb..986fb388d5 100644 > --- a/commit-reach.h > +++ b/commit-reach.h > @@ -2,42 +2,24 @@ > #define __COMMIT_REACH_H__ > > #include "commit.h" > +#include "commit-slab.h" > +#include "ref-filter.h" > > -struct commit_list *get_merge_bases_many(struct commit *one, > - int n, > - struct commit **twos); > -struct commit_list *get_merge_bases_many_dirty(struct commit *one, > - int n, > - struct commit **twos); > -struct commit_list *get_merge_bases(struct commit *one, struct commit *two); > -struct commit_list *get_octopus_merge_bases(struct commit_list *in); > - > -/* To be used only when object flags after this call no longer matter */ > -struct commit_list *get_merge_bases_many_dirty(struct commit *one, int n, struct commit **twos); > - > -int is_descendant_of(struct commit *commit, struct commit_list *with_commit); > -int in_merge_bases_many(struct commit *commit, int nr_reference, struct commit **reference); > -int in_merge_bases(struct commit *commit, struct commit *reference); > - > +int ref_newer(const struct object_id *new_oid, const struct object_id *old_oid); > > /* > - * Takes a list of commits and returns a new list where those > - * have been removed that can be reached from other commits in > - * the list. It is useful for, e.g., reducing the commits > - * randomly thrown at the git-merge command and removing > - * redundant commits that the user shouldn't have given to it. > - * > - * This function destroys the STALE bit of the commit objects' > - * flags. The above removal of lines is sloppy; they are mostly duplicates in commit.h that should never have been moved here in the first place, no? > + * Unknown has to be "0" here, because that's the default value for > + * contains_cache slab entries that have not yet been assigned. > */ > -struct commit_list *reduce_heads(struct commit_list *heads); > +enum contains_result { > + CONTAINS_UNKNOWN = 0, > + CONTAINS_NO, > + CONTAINS_YES > +}; Are these names specific enough, or were they OK in the limited context inside ref-filter but now are overly broad as globally visible names? I suspect it might be the latter.