mirror of
https://git.proxmox.com/git/libgit2
synced 2026-01-04 21:21:02 +00:00
Add fall-back support to the configuration
If a config has several files, we need to check all of them before we can say that a variable doesn't exist. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
This commit is contained in:
parent
3de5df7d8e
commit
f3dad3acd7
12
src/config.c
12
src/config.c
@ -310,13 +310,19 @@ int git_config_get_string(git_config *cfg, const char *name, const char **out)
|
||||
{
|
||||
file_internal *internal;
|
||||
git_config_file *file;
|
||||
int i, error;
|
||||
|
||||
if (cfg->files.length == 0)
|
||||
return git__throw(GIT_EINVALIDARGS, "Cannot get variable value; no files open in the `git_config` instance");
|
||||
|
||||
internal = git_vector_get(&cfg->files, 0);
|
||||
file = internal->file;
|
||||
for (i = 0; i < cfg->files.length; ++i) {
|
||||
internal = git_vector_get(&cfg->files, i);
|
||||
file = internal->file;
|
||||
error = file->get(file, name, out);
|
||||
if (error == GIT_SUCCESS)
|
||||
break;
|
||||
}
|
||||
|
||||
return file->get(file, name, out);
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@ -230,6 +230,26 @@ BEGIN_TEST(config10, "a repo's config overrides the global config")
|
||||
git_repository_free(repo);
|
||||
END_TEST
|
||||
|
||||
BEGIN_TEST(config11, "fall back to the global config")
|
||||
git_repository *repo;
|
||||
char home_orig[GIT_PATH_MAX];
|
||||
char *home;
|
||||
git_config *cfg;
|
||||
int num;
|
||||
|
||||
home = getenv("HOME");
|
||||
strcpy(home_orig, home);
|
||||
setenv("HOME", CONFIG_BASE, 1);
|
||||
|
||||
must_pass(git_repository_open(&repo, REPOSITORY_FOLDER));
|
||||
must_pass(git_repository_config(&cfg, repo));
|
||||
setenv("HOME", home_orig, 1);
|
||||
must_pass(git_config_get_int(cfg, "core.something", &num));
|
||||
must_be_true(num == 2);
|
||||
git_config_free(cfg);
|
||||
git_repository_free(repo);
|
||||
END_TEST
|
||||
|
||||
BEGIN_SUITE(config)
|
||||
ADD_TEST(config0);
|
||||
ADD_TEST(config1);
|
||||
@ -242,4 +262,5 @@ BEGIN_SUITE(config)
|
||||
ADD_TEST(config8);
|
||||
ADD_TEST(config9);
|
||||
ADD_TEST(config10);
|
||||
ADD_TEST(config11);
|
||||
END_SUITE
|
||||
|
||||
Loading…
Reference in New Issue
Block a user