summaryrefslogtreecommitdiffstats
path: root/submodule-config.c
diff options
context:
space:
mode:
authorAntonio Ospite <ao2@ao2.it>2018-10-05 15:05:52 +0200
committerJunio C Hamano <gitster@pobox.com>2018-10-09 12:40:20 +0900
commitbcbc780d143c4e8a9c6449f38b8c83d62da14906 (patch)
tree7ce1274eeb3ea210b223de80b20dcf26b1ad6fb8 /submodule-config.c
parent1d4361b0f344188ab5eec6dcea01f61a3a3a1670 (diff)
downloadgit-bcbc780d143c4e8a9c6449f38b8c83d62da14906.tar.gz
git-bcbc780d143c4e8a9c6449f38b8c83d62da14906.tar.xz
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>
Diffstat (limited to 'submodule-config.c')
-rw-r--r--submodule-config.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/submodule-config.c b/submodule-config.c
index fc2c41b94..5aaf7ac00 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -682,6 +682,31 @@ void submodule_free(struct repository *r)
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 {
int *max_children;
int *recurse_submodules;