>> +static enum { >> + SUBMODULE_CONFIG_NOT_READ = 0, >> + SUBMODULE_CONFIG_NO_CONFIG, >> + SUBMODULE_CONFIG_EXISTS, >> +} submodule_config_reading; > > Any way we can have this not be a global, but rather a parameter? You > could pass in a pointer to this value via the callback data parameter in > the submodule_config function. As said in the reply to Junio, this patch has been sitting on my hard drive for a while and was written before you started the attempt to de-globalize the state of git. Ideally this setting would be part of the repository object. For example the repository object would have a "submodule_config" pointer, initialized to NULL, which can then be set to the read config or a static empty_config if no such config exists.