X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=builtin-config.c;h=2b9a4261d4e98281855ce856041eb730565a4869;hb=660b9c3a4e24ce9a2628f2ec88902e2384d1aade;hp=d10b03f50cbcecd10b3a82a3fea53293c3e50806;hpb=0f6f5a4022de5904926cd528c681468e3f635256;p=git.git diff --git a/builtin-config.c b/builtin-config.c index d10b03f50..2b9a4261d 100644 --- a/builtin-config.c +++ b/builtin-config.c @@ -79,9 +79,10 @@ static int get_value(const char* key_, const char* regex_) local = getenv(CONFIG_LOCAL_ENVIRONMENT); if (!local) local = repo_config = xstrdup(git_path("config")); - if (home) + if (git_config_global() && home) global = xstrdup(mkpath("%s/.gitconfig", home)); - system_wide = git_etc_gitconfig(); + if (git_config_system()) + system_wide = git_etc_gitconfig(); } key = xstrdup(key_); @@ -168,6 +169,8 @@ static char parsed_color[COLOR_MAXLEN]; static int git_get_color_config(const char *var, const char *value) { if (!strcmp(var, get_color_slot)) { + if (!value) + config_error_nonbool(var); color_parse(value, var, parsed_color); get_color_found = 1; } @@ -210,11 +213,17 @@ static int get_color(int argc, const char **argv) static int stdout_is_tty; static int get_colorbool_found; +static int get_diff_color_found; static int git_get_colorbool_config(const char *var, const char *value) { - if (!strcmp(var, get_color_slot)) + if (!strcmp(var, get_color_slot)) { get_colorbool_found = git_config_colorbool(var, value, stdout_is_tty); + } + if (!strcmp(var, "diff.color")) { + get_diff_color_found = + git_config_colorbool(var, value, stdout_is_tty); + } return 0; } @@ -233,10 +242,18 @@ static int get_colorbool(int argc, const char **argv) stdout_is_tty = isatty(1); else usage(git_config_set_usage); - get_colorbool_found = 0; + get_colorbool_found = -1; + get_diff_color_found = -1; get_color_slot = argv[0]; git_config(git_get_colorbool_config); + if (get_colorbool_found < 0) { + if (!strcmp(get_color_slot, "color.diff")) + get_colorbool_found = get_diff_color_found; + if (get_colorbool_found < 0) + get_colorbool_found = 0; + } + if (argc == 1) { return get_colorbool_found ? 0 : 1; } else {