Browse Source

submodule-config: add helper function to get 'fetch' config from .gitmodules

Add a helper function to make it clearer that retrieving 'fetch'
configuration from the .gitmodules file is a special case supported
solely for backward compatibility purposes.

This change removes one direct use of 'config_from_gitmodules' in code
not strictly related to submodules, in the effort to communicate better
that .gitmodules is not to be used as a mechanism to store arbitrary
configuration in the repository that any command can retrieve.

Signed-off-by: Antonio Ospite <ao2@ao2.it>
Acked-by: Brandon Williams <bmwill@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Antonio Ospite 7 years ago committed by Junio C Hamano
parent
commit
71a6953d16
  1. 15
      builtin/fetch.c
  2. 28
      submodule-config.c
  3. 2
      submodule-config.h

15
builtin/fetch.c

@ -93,19 +93,6 @@ static int git_fetch_config(const char *k, const char *v, void *cb) @@ -93,19 +93,6 @@ static int git_fetch_config(const char *k, const char *v, void *cb)
return git_default_config(k, v, cb);
}

static int gitmodules_fetch_config(const char *var, const char *value, void *cb)
{
if (!strcmp(var, "submodule.fetchjobs")) {
max_children = parse_submodule_fetchjobs(var, value);
return 0;
} else if (!strcmp(var, "fetch.recursesubmodules")) {
recurse_submodules = parse_fetch_recurse_submodules_arg(var, value);
return 0;
}

return 0;
}

static int parse_refmap_arg(const struct option *opt, const char *arg, int unset)
{
/*
@ -1433,7 +1420,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) @@ -1433,7 +1420,7 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
for (i = 1; i < argc; i++)
strbuf_addf(&default_rla, " %s", argv[i]);

config_from_gitmodules(gitmodules_fetch_config, NULL);
fetch_config_from_gitmodules(&max_children, &recurse_submodules);
git_config(git_fetch_config, NULL);

argc = parse_options(argc, argv, prefix,

28
submodule-config.c

@ -688,3 +688,31 @@ void config_from_gitmodules(config_fn_t fn, void *data) @@ -688,3 +688,31 @@ void config_from_gitmodules(config_fn_t fn, void *data)
free(file);
}
}

struct fetch_config {
int *max_children;
int *recurse_submodules;
};

static int gitmodules_fetch_config(const char *var, const char *value, void *cb)
{
struct fetch_config *config = cb;
if (!strcmp(var, "submodule.fetchjobs")) {
*(config->max_children) = parse_submodule_fetchjobs(var, value);
return 0;
} else if (!strcmp(var, "fetch.recursesubmodules")) {
*(config->recurse_submodules) = parse_fetch_recurse_submodules_arg(var, value);
return 0;
}

return 0;
}

void fetch_config_from_gitmodules(int *max_children, int *recurse_submodules)
{
struct fetch_config config = {
.max_children = max_children,
.recurse_submodules = recurse_submodules
};
config_from_gitmodules(gitmodules_fetch_config, &config);
}

2
submodule-config.h

@ -66,4 +66,6 @@ int check_submodule_name(const char *name); @@ -66,4 +66,6 @@ int check_submodule_name(const char *name);
*/
extern void config_from_gitmodules(config_fn_t fn, void *data);

extern void fetch_config_from_gitmodules(int *max_children, int *recurse_submodules);

#endif /* SUBMODULE_CONFIG_H */

Loading…
Cancel
Save