On Fri, Dec 03 2021, Lessley Dennington via GitGitGadget wrote: > From: Lessley Dennington <lessleydennington@xxxxxxxxx> > > Check whether git directory exists before adding any repo settings. If it > does not exist, BUG with the message that one cannot add settings for an > uninitialized repository. If it does exist, proceed with adding repo > settings. > > Signed-off-by: Lessley Dennington <lessleydennington@xxxxxxxxx> > --- > repo-settings.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/repo-settings.c b/repo-settings.c > index b93e91a212e..00ca5571a1a 100644 > --- a/repo-settings.c > +++ b/repo-settings.c > @@ -17,6 +17,9 @@ void prepare_repo_settings(struct repository *r) > char *strval; > int manyfiles; > > + if (!r->gitdir) > + BUG("Cannot add settings for uninitialized repository"); nit: start BUG(), error() etc. messages with lower-case. > + > if (r->settings.initialized++) > return; Our config doesn't require us to have a repo, and most of what prepare_repo_settings() is doing is reading global config. I think that *currently* this won't break things, but e.g. if we ever want to have "feature.experimental" or whatever change the behavior of a a command that doesn't require a repository we'd need to untangle this (currently everything it changes requires a repo AFAICT). Perhaps this is fine, and if we ever need such a "global config" point we should stick it closer to common-main.c...