[PATCH 13/16] config: do not read .git/config if there is no repository
From: Nguyễn Thái Ngọc Duy <hidden>
Date: 2016-06-15 22:48:25
Subsystem:
the rest · Maintainer:
Linus Torvalds
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted> --- 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.1.384.g6abcaa