This is a follow-up to the kh/maintenance-use-xdg-when-it-should [series] which was merged in 12ee4ed506 (Merge branch 'kh/maintenance-use-xdg-when-it-sho.., 2024-01-26). I dropped a code comment while iterating on a refactor. It still makes as much sense in this context as before the refactor (it’s a _refactor_ in the sense of “don’t change code behavior”). The code comment was moved to `config.c` in patch v1 3/4.[1] But review feedback said that this comment didn’t fit in this new place and that we shouldn’t `die()` in `git_global_config`. So in v2 3/4[2] I removed the comment in `git_global_config`. But I forgot to put the comment back to its original place, where it still makes as much sense as before my series. [Here] is the diff when I squash this patch into c15129b699 (config: factor out global config file retrieval, 2024-01-18). Sorry about the churn. Cc: ps@xxxxxx 🔗 series: https://lore.kernel.org/git/cover.1697660181.git.code@xxxxxxxxxxxxxxx/ 🔗 1: https://lore.kernel.org/git/147c767443c35b3b4a5516bf40557f41bb201078.1697660181.git.code@xxxxxxxxxxxxxxx/ 🔗 2: https://lore.kernel.org/git/32e5ec7d866ff8fd26554b325812c6e19cb65126.1705267839.git.code@xxxxxxxxxxxxxxx/ † Here: diff --git a/builtin/config.c b/builtin/config.c index 6fff265581..b55bfae7d6 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -708,10 +708,8 @@ int cmd_config(int argc, const char **argv, const char *prefix) } if (use_global_config) { - char *user_config, *xdg_config; - - git_global_config_paths(&user_config, &xdg_config); - if (!user_config) + given_config_source.file = git_global_config(); + if (!given_config_source.file) /* * It is unknown if HOME/.gitconfig exists, so * we do not know if we should write to XDG @@ -719,19 +717,8 @@ int cmd_config(int argc, const char **argv, const char *prefix) * is set and points at a sane location. */ die(_("$HOME not set")); - given_config_source.scope = CONFIG_SCOPE_GLOBAL; - - if (access_or_warn(user_config, R_OK, 0) && - xdg_config && !access_or_warn(xdg_config, R_OK, 0)) { - given_config_source.file = xdg_config; - free(user_config); - } else { - given_config_source.file = user_config; - free(xdg_config); - } - } - else if (use_system_config) { + } else if (use_system_config) { given_config_source.file = git_system_config(); given_config_source.scope = CONFIG_SCOPE_SYSTEM; } else if (use_local_config) { diff --git a/config.c b/config.c index ebc6a57e1c..3cfeb3d8bd 100644 --- a/config.c +++ b/config.c @@ -1987,6 +1987,26 @@ char *git_system_config(void) return system_config; } +char *git_global_config(void) +{ + char *user_config, *xdg_config; + + git_global_config_paths(&user_config, &xdg_config); + if (!user_config) { + free(xdg_config); + return NULL; + } + + if (access_or_warn(user_config, R_OK, 0) && xdg_config && + !access_or_warn(xdg_config, R_OK, 0)) { + free(user_config); + return xdg_config; + } else { + free(xdg_config); + return user_config; + } +} + void git_global_config_paths(char **user_out, char **xdg_out) { char *user_config = xstrdup_or_null(getenv("GIT_CONFIG_GLOBAL")); diff --git a/config.h b/config.h index e5e523553c..5dba984f77 100644 --- a/config.h +++ b/config.h @@ -382,6 +382,7 @@ int config_error_nonbool(const char *); #endif char *git_system_config(void); +char *git_global_config(void); void git_global_config_paths(char **user, char **xdg); int git_config_parse_parameter(const char *, config_fn_t fn, void *data); Kristoffer Haugsbakk (1): config: add back code comment builtin/config.c | 6 ++++++ 1 file changed, 6 insertions(+) -- 2.43.0