On Wed, Sep 04, 2024 at 11:46:47AM +1000, James Liu wrote: > On Fri Aug 30, 2024 at 7:09 PM AEST, Patrick Steinhardt wrote: > > diff --git a/config.c b/config.c > > index a8357ea9544..043e1c8a078 100644 > > --- a/config.c > > +++ b/config.c > > @@ -6,8 +6,6 @@ > > * > > */ > > > > -#define USE_THE_REPOSITORY_VARIABLE > > - > > #include "git-compat-util.h" > > #include "abspath.h" > > #include "advice.h" > > @@ -2204,7 +2202,7 @@ static void configset_iter(struct config_set *set, config_fn_t fn, void *data) > > } > > } > > > > -void read_early_config(config_fn_t cb, void *data) > > +void read_early_config(struct repository *repo, config_fn_t cb, void *data) > > { > > struct config_options opts = {0}; > > struct strbuf commondir = STRBUF_INIT; > > @@ -2212,9 +2210,9 @@ void read_early_config(config_fn_t cb, void *data) > > > > opts.respect_includes = 1; > > > > - if (have_git_dir()) { > > - opts.commondir = repo_get_common_dir(the_repository); > > - opts.git_dir = repo_get_git_dir(the_repository); > > + if (repo && repo->gitdir) { > > + opts.commondir = repo_get_common_dir(repo); > > + opts.git_dir = repo_get_git_dir(repo); > > /* > > * When setup_git_directory() was not yet asked to discover the > > * GIT_DIR, we ask discover_git_directory() to figure out whether there > > It doesn't really matter either way since we perform the same checks, but should we do > > if (repo && repo_get_git_dir(repo)) > > instead of accessing the field directly? We in fact can't. `read_early_config()` is typically invoked with the global `the_repository`. That variable is always set, but its `git_dir` may not be populated depending on when exactly we call this function and whether or not we are inside a repository. With `repo_get_git_dir()` we'd now die in scenarios where it's unset, which we do not want. Patrick