Here's a version that implements the URL lookahead. Compared to an approach in which we rerun config in order to just get the remote URLs, I think that the main benefit of this is that we don't read from disk twice. One inelegant thing is that we now have essentially two caches of config variables - the one in struct repository (struct config_set *config) and the one newly introduced by this patch set. (Although I think that many commands don't use the cache in struct repository, instead just reading the config in one pass.) (Of course, there is also the possibility that we should have the remote repo administrator provide the config in another way.) I have marked this WIP. This patch set is mostly done, except for the following: - Prohibiting remote.?.url from any files included directly or indirectly by a URL-conditional include. - Checking that memory everywhere is freed when no longer needed. - Documentation (as mentioned in the NEEDSWORK comment in patch 2). - Tests that check what the glob matches and doesn't match. No range-diff included because this version is substantially different. Jonathan Tan (2): config: make git_config_include() static config: include file if remote URL matches a glob config.c | 142 ++++++++++++++++++++++++++++++++++++++++++---- config.h | 37 ++---------- t/t1300-config.sh | 60 ++++++++++++++++++++ 3 files changed, 194 insertions(+), 45 deletions(-) -- 2.33.1.1089.g2158813163f-goog