config: respect includes in protected config
Protected config is implemented by reading a fixed set of paths,
which ignores config [include]-s. Replace this implementation with a
call to config_with_options(), which handles [include]-s and saves us
from duplicating the logic of 1) identifying which paths to read and 2)
reading command line config.
As a result, git_configset_add_parameters() is unused, so remove it. It
was introduced alongside protected config in 5b3c650777
(config: learn
`git_protected_config()`, 2022-07-14) as a way to handle command line
config.
Signed-off-by: Glen Choo <chooglen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
776f184893
commit
ecec57b3c9
30
config.c
30
config.c
@ -2391,11 +2391,6 @@ int git_configset_add_file(struct config_set *cs, const char *filename)
|
||||
return git_config_from_file(config_set_callback, filename, cs);
|
||||
}
|
||||
|
||||
int git_configset_add_parameters(struct config_set *cs)
|
||||
{
|
||||
return git_config_from_parameters(config_set_callback, cs);
|
||||
}
|
||||
|
||||
int git_configset_get_value(struct config_set *cs, const char *key, const char **value)
|
||||
{
|
||||
const struct string_list *values = NULL;
|
||||
@ -2640,24 +2635,15 @@ int repo_config_get_pathname(struct repository *repo,
|
||||
/* Read values into protected_config. */
|
||||
static void read_protected_config(void)
|
||||
{
|
||||
char *xdg_config = NULL, *user_config = NULL, *system_config = NULL;
|
||||
|
||||
struct config_options opts = {
|
||||
.respect_includes = 1,
|
||||
.ignore_repo = 1,
|
||||
.ignore_worktree = 1,
|
||||
.system_gently = 1,
|
||||
};
|
||||
git_configset_init(&protected_config);
|
||||
|
||||
system_config = git_system_config();
|
||||
git_global_config(&user_config, &xdg_config);
|
||||
|
||||
if (system_config)
|
||||
git_configset_add_file(&protected_config, system_config);
|
||||
if (xdg_config)
|
||||
git_configset_add_file(&protected_config, xdg_config);
|
||||
if (user_config)
|
||||
git_configset_add_file(&protected_config, user_config);
|
||||
git_configset_add_parameters(&protected_config);
|
||||
|
||||
free(system_config);
|
||||
free(xdg_config);
|
||||
free(user_config);
|
||||
config_with_options(config_set_callback, &protected_config,
|
||||
NULL, &opts);
|
||||
}
|
||||
|
||||
void git_protected_config(config_fn_t fn, void *data)
|
||||
|
@ -70,4 +70,13 @@ test_expect_success 'safe.directory=*, but is reset' '
|
||||
expect_rejected_dir
|
||||
'
|
||||
|
||||
test_expect_success 'safe.directory in included file' '
|
||||
cat >gitconfig-include <<-EOF &&
|
||||
[safe]
|
||||
directory = "$(pwd)"
|
||||
EOF
|
||||
git config --global --add include.path "$(pwd)/gitconfig-include" &&
|
||||
git status
|
||||
'
|
||||
|
||||
test_done
|
||||
|
@ -51,4 +51,13 @@ test_expect_success 'safe.bareRepository on the command line' '
|
||||
-c safe.bareRepository=all
|
||||
'
|
||||
|
||||
test_expect_success 'safe.bareRepository in included file' '
|
||||
cat >gitconfig-include <<-\EOF &&
|
||||
[safe]
|
||||
bareRepository = explicit
|
||||
EOF
|
||||
git config --global --add include.path "$(pwd)/gitconfig-include" &&
|
||||
expect_rejected -C outer-repo/bare-repo
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user