[PATCH 34/43] config: do not read .git/config if there is no repository
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
builtin/config.c | 9 ++++++---
t/t1300-repo-config.sh | 3 ++-
t/t1302-repo-version.sh | 2 +-
3 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/builtin/config.c b/builtin/config.c
index ecc8f87..3fca3b4 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -159,7 +159,8 @@ static int get_value(const char *key_, const char *regex_)
local = config_exclusive_filename;
if (!local) {
const char *home = getenv("HOME");
- local = repo_config = git_pathdup("config");
+ if (startup_info->have_repository)
+ local = repo_config = git_pathdup("config");
if (git_config_global() && home)
global = xstrdup(mkpath("%s/.gitconfig", home));
if (git_config_system())
@@ -197,7 +198,8 @@ static int get_value(const char *key_, const char *regex_)
git_config_from_file(show_config, system_wide, NULL);
if (do_all && global)
git_config_from_file(show_config, global, NULL);
- git_config_from_file(show_config, local, NULL);
+ if (local)
+ git_config_from_file(show_config, local, NULL);
if (!do_all && !seen && global)
git_config_from_file(show_config, global, NULL);
if (!do_all && !seen && system_wide)
@@ -215,7 +217,8 @@ static int get_value(const char *key_, const char *regex_)
ret = (seen == 1) ? 0 : seen > 1 ? 2 : 1;
free_strings:
- free(repo_config);
+ if (repo_config)
+ free(repo_config);
free(global);
return ret;
}
diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh
index cfb70e2..b040f72 100755
--- a/t/t1300-repo-config.sh
+++ b/t/t1300-repo-config.sh
@@ -833,7 +833,8 @@ test_expect_success 'skip .git/config if there is no repository' '
cd b &&
echo "[core]" > .git/config &&
echo "wrong = true" >> .git/config &&
- test -z "$(git var -l | grep core.wrong)"
+ test -z "$(git var -l | grep core.wrong)" &&
+ test -z "$(git config --bool core.wrong)"
)
'
diff --git a/t/t1302-repo-version.sh b/t/t1302-repo-version.sh
index 8d305b4..74bf51f 100755
--- a/t/t1302-repo-version.sh
+++ b/t/t1302-repo-version.sh
@@ -29,7 +29,7 @@ test_expect_success 'gitdir selection on normal repos' '
# Make sure it would stop at test2, not trash
test_expect_success 'gitdir selection on unsupported repo' '
(cd test2 &&
- test "$(git config core.repositoryformatversion)" = 99)'
+ test "$(git config --file=.git/config core.repositoryformatversion)" = 99)'
test_expect_success 'gitdir not required mode' '
(git apply --stat test.patch &&
--
1.7.0.rc1.541.g2da82.dirty