diff --git a/builtin/init-db.c b/builtin/init-db.c index 3a45f0bcfb..911e4822af 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -154,6 +154,14 @@ static int git_init_db_config(const char *k, const char *v, void *cb) if (!strcmp(k, "init.templatedir")) return git_config_pathname(&init_db_template_dir, k, v); + if (!strcmp(k, "core.hidedotfiles")) { + if (v && !strcasecmp(v, "dotgitonly")) + hide_dotfiles = HIDE_DOTFILES_DOTGITONLY; + else + hide_dotfiles = git_config_bool(k, v); + return 0; + } + return 0; } @@ -188,9 +196,6 @@ static int create_default_files(const char *template_path) safe_create_dir(git_path_buf(&buf, "refs/heads"), 1); safe_create_dir(git_path_buf(&buf, "refs/tags"), 1); - /* Just look for `init.templatedir` */ - git_config(git_init_db_config, NULL); - /* First copy the templates -- we might have the default * config file there, in which case we would want to read * from it after installing. @@ -358,6 +363,9 @@ int init_db(const char *template_dir, unsigned int flags) if (git_link) separate_git_dir(git_dir); + /* Just look for `init.templatedir` and `core.hidedotfiles` */ + git_config(git_init_db_config, NULL); + safe_create_dir(git_dir, 0); init_is_bare_repository = is_bare_repository(); diff --git a/t/t0001-init.sh b/t/t0001-init.sh index a6fdd5ef3a..7020aec3a0 100755 --- a/t/t0001-init.sh +++ b/t/t0001-init.sh @@ -384,4 +384,16 @@ test_expect_success MINGW 'bare git dir not hidden' ' ! is_hidden newdir ' +test_expect_success MINGW 'core.hidedotfiles = false' ' + git config --global core.hidedotfiles false && + rm -rf newdir && + ( + unset GIT_DIR GIT_WORK_TREE GIT_CONFIG + mkdir newdir && + cd newdir && + git init + ) && + ! is_hidden newdir/.git +' + test_done