mirror of
https://github.com/git/git.git
synced 2024-11-28 04:23:30 +08:00
config: factor out global config file retrieval
Factor out code that retrieves the global config file so that we can use it in `gc.c` as well. Use the old name from the previous commit since this function acts functionally the same as `git_system_config` but for “global”. Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ecffa3ed51
commit
c15129b699
@ -708,30 +708,11 @@ 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)
|
||||
/*
|
||||
* It is unknown if HOME/.gitconfig exists, so
|
||||
* we do not know if we should write to XDG
|
||||
* location; error out even if XDG_CONFIG_HOME
|
||||
* is set and points at a sane location.
|
||||
*/
|
||||
given_config_source.file = git_global_config();
|
||||
if (!given_config_source.file)
|
||||
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) {
|
||||
|
20
config.c
20
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"));
|
||||
|
Loading…
Reference in New Issue
Block a user