When the command we are about to execute wants to create a repository (i.e. the command is `init` or `clone`), we *must not* look for a repository config. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- cache.h | 2 +- config.c | 3 ++- git.c | 3 +++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cache.h b/cache.h index 6b6780064f0..0af7141242f 100644 --- a/cache.h +++ b/cache.h @@ -2070,7 +2070,7 @@ const char *split_cmdline_strerror(int cmdline_errno); /* setup.c */ struct startup_info { - int have_repository; + int have_repository, creating_repository; const char *prefix; }; extern struct startup_info *startup_info; diff --git a/config.c b/config.c index 9cfbeafd04c..980fcc6ff2e 100644 --- a/config.c +++ b/config.c @@ -1434,7 +1434,8 @@ void read_early_config(config_fn_t cb, void *data) * valid repository), and would rarely make things worse (i.e., you do * not generally have a .git/config file sitting around). */ - if (!startup_info->have_repository) { + if (!startup_info->creating_repository && + !startup_info->have_repository) { struct git_config_source repo_config; memset(&repo_config, 0, sizeof(repo_config)); diff --git a/git.c b/git.c index 33f52acbcc8..9fb9bb90a21 100644 --- a/git.c +++ b/git.c @@ -337,6 +337,9 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv) struct stat st; const char *prefix; + if (p->fn == cmd_init_db || p->fn == cmd_clone) + startup_info->creating_repository = 1; + prefix = NULL; help = argc == 2 && !strcmp(argv[1], "-h"); if (!help) { -- 2.12.0.windows.1.3.g8a117c48243