X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=repo-config.c;h=8c0bb2029171e35d3f6cd39932ee035aca85bb0c;hb=refs%2Fheads%2Fpu;hp=63eda1bb783fcb9ff72843e74383abb0f0581441;hpb=50c08d48722149d95f46bcc80a5211ea04b8a809;p=git.git diff --git a/repo-config.c b/repo-config.c index 63eda1bb..8c0bb202 100644 --- a/repo-config.c +++ b/repo-config.c @@ -64,12 +64,15 @@ static int show_config(const char* key_, const char* value_) static int get_value(const char* key_, const char* regex_) { - int i; + char *tl; + const char *home = getenv("HOME"); + const char *global = (home ? mkpath("%s/.gitconfig", home) : NULL); - key = malloc(strlen(key_)+1); - for (i = 0; key_[i]; i++) - key[i] = tolower(key_[i]); - key[i] = 0; + key = strdup(key_); + for (tl=key+strlen(key)-1; tl >= key && *tl != '.'; --tl) + *tl = tolower(*tl); + for (tl=key; *tl && *tl != '.'; ++tl) + *tl = tolower(*tl); if (use_key_regexp) { key_regexp = (regex_t*)malloc(sizeof(regex_t)); @@ -92,7 +95,13 @@ static int get_value(const char* key_, const char* regex_) } } - git_config(show_config); + if (do_all && global) + git_config_from_file(show_config, global); + if (!git_ignore_local_config) + git_config_from_file(show_config, git_path("config")); + if (!do_all && !seen) + git_config_from_file(show_config, global); + free(key); if (regexp) { regfree(regexp); @@ -107,7 +116,8 @@ static int get_value(const char* key_, const char* regex_) int main(int argc, const char **argv) { - setup_git_directory(); + int nongit = 0; + setup_git_directory_gently(&nongit); while (1 < argc) { if (!strcmp(argv[1], "--int")) @@ -116,6 +126,8 @@ int main(int argc, const char **argv) type = T_BOOL; else if (!strcmp(argv[1], "--list") || !strcmp(argv[1], "-l")) return git_config(show_all_config); + else if (!strcmp(argv[1], "--no-local")) + git_ignore_local_config = 1; else break; argc--;