submodule: add a print_config_from_gitmodules() helper

Add a new print_config_from_gitmodules() helper function to print values
from .gitmodules just like "git config -f .gitmodules" would.

This will be used by a new submodule--helper subcommand to be able to
access the .gitmodules file in a more controlled way.

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Antonio Ospite 2018-10-05 15:05:52 +02:00 коммит произвёл Junio C Hamano
Родитель 1d4361b0f3
Коммит bcbc780d14
2 изменённых файлов: 26 добавлений и 0 удалений

Просмотреть файл

@ -682,6 +682,31 @@ void submodule_free(struct repository *r)
submodule_cache_clear(r->submodule_cache); submodule_cache_clear(r->submodule_cache);
} }
static int config_print_callback(const char *var, const char *value, void *cb_data)
{
char *wanted_key = cb_data;
if (!strcmp(wanted_key, var))
printf("%s\n", value);
return 0;
}
int print_config_from_gitmodules(struct repository *repo, const char *key)
{
int ret;
char *store_key;
ret = git_config_parse_key(key, &store_key, NULL);
if (ret < 0)
return CONFIG_INVALID_KEY;
config_from_gitmodules(config_print_callback, repo, store_key);
free(store_key);
return 0;
}
struct fetch_config { struct fetch_config {
int *max_children; int *max_children;
int *recurse_submodules; int *recurse_submodules;

Просмотреть файл

@ -48,6 +48,7 @@ const struct submodule *submodule_from_path(struct repository *r,
const struct object_id *commit_or_tree, const struct object_id *commit_or_tree,
const char *path); const char *path);
void submodule_free(struct repository *r); void submodule_free(struct repository *r);
int print_config_from_gitmodules(struct repository *repo, const char *key);
/* /*
* Returns 0 if the name is syntactically acceptable as a submodule "name" * Returns 0 if the name is syntactically acceptable as a submodule "name"