"Alphadelta14 via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > diff --git a/tree.h b/tree.h > index 6efff003e21..cc6402e4738 100644 > --- a/tree.h > +++ b/tree.h > @@ -18,15 +18,21 @@ struct tree *lookup_tree(struct repository *r, const struct object_id *oid); > > int parse_tree_buffer(struct tree *item, void *buffer, unsigned long size); > > -int parse_tree_gently(struct tree *tree, int quiet_on_missing); > -static inline int parse_tree(struct tree *tree) > +int repo_parse_tree_gently(struct repository *r, struct tree *tree, int quiet_on_missing); > +static inline int repo_parse_tree(struct repository *r, struct tree *tree) > { > - return parse_tree_gently(tree, 0); > + return repo_parse_tree_gently(r, tree, 0); > } > + > +#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS > +#define parse_tree(tree) repo_parse_tree(the_repository, tree) > +#define parse_tree_gently(tree, quiet_on_missing) repo_parse_tree_gently(the_repository, tree, quiet_on_missing) > +#define parse_tree_indirect(oid) repo_parse_tree_indirect(the_repository, oid) > +#endif Typically, when we have repo_* and non-repo_* variants, we use a "static inline" function, e.g. from refs.h: int repo_dwim_ref(struct repository *r, const char *str, int len, struct object_id *oid, char **ref, int nonfatal_dangling_mark); static inline int dwim_ref(const char *str, int len, struct object_id *oid, char **ref, int nonfatal_dangling_mark) { return repo_dwim_ref(the_repository, str, len, oid, ref, nonfatal_dangling_mark); } I think we should do the same here, instead of using "#ifndef NO_THE_REPOSITORY_COMPATIBILITY_MACROS". >From I can gather from "git log -S NO_THE_REPOSITORY_COMPATIBILITY_MACROS", that macro was introduced in e675765235 (diff.c: remove implicit dependency on the_index, 2018-09-21) and all instances of that macro were introduced around that time. At the time, there was an effort to get rid of the_repository and the_index almost everywhere (except builtins), and the macro would ensure that we did this successfully. We did such a good job with the_index that we flipped the default from NO_THE_INDEX_COMPATIBILITY_MACROS to USE_THE_INDEX_COMPATIBILITY_MACROS (f8adbec9fe (cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch, 2019-01-24)) but it looks like we never got there with the_repository. I couldn't find any instances of "#define NO_THE_REPOSITORY_COMPATIBILITY_MACROS", so I think we should just use "static inline" instead. Alternatively, one could get rid of the non-repo_* variant and adjust all existing callers to use "struct repository", but that's a lot of churn and may conflict with other in-flight series, so that's probably left for another time. > void free_tree_buffer(struct tree *tree); > > /* Parses and returns the tree in the given ent, chasing tags and commits. */ > -struct tree *parse_tree_indirect(const struct object_id *oid); > +struct tree *repo_parse_tree_indirect(struct repository *r, const struct object_id *oid); > > int cmp_cache_name_compare(const void *a_, const void *b_); > > -- > gitgitgadget