Merge branch 'jk/submodule-c-credential'
An earlier addition of "sanitize_submodule_env" with 14111fc4
(git:
submodule honor -c credential.* from command line, 2016-02-29)
turned out to be a convoluted no-op; implement what it wanted to do
correctly, and stop filtering settings given via "git -c var=val".
* jk/submodule-c-credential:
submodule: stop sanitizing config options
submodule: use prepare_submodule_repo_env consistently
submodule--helper: move config-sanitizing to submodule.c
submodule: export sanitized GIT_CONFIG_PARAMETERS
t5550: break submodule config test into multiple sub-tests
t5550: fix typo in $HTTPD_URL
This commit is contained in:
@ -443,54 +443,6 @@ static int module_name(int argc, const char **argv, const char *prefix)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Rules to sanitize configuration variables that are Ok to be passed into
|
||||
* submodule operations from the parent project using "-c". Should only
|
||||
* include keys which are both (a) safe and (b) necessary for proper
|
||||
* operation.
|
||||
*/
|
||||
static int submodule_config_ok(const char *var)
|
||||
{
|
||||
if (starts_with(var, "credential."))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sanitize_submodule_config(const char *var, const char *value, void *data)
|
||||
{
|
||||
struct strbuf *out = data;
|
||||
|
||||
if (submodule_config_ok(var)) {
|
||||
if (out->len)
|
||||
strbuf_addch(out, ' ');
|
||||
|
||||
if (value)
|
||||
sq_quotef(out, "%s=%s", var, value);
|
||||
else
|
||||
sq_quote_buf(out, var);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void prepare_submodule_repo_env(struct argv_array *out)
|
||||
{
|
||||
const char * const *var;
|
||||
|
||||
for (var = local_repo_env; *var; var++) {
|
||||
if (!strcmp(*var, CONFIG_DATA_ENVIRONMENT)) {
|
||||
struct strbuf sanitized_config = STRBUF_INIT;
|
||||
git_config_from_parameters(sanitize_submodule_config,
|
||||
&sanitized_config);
|
||||
argv_array_pushf(out, "%s=%s", *var, sanitized_config.buf);
|
||||
strbuf_release(&sanitized_config);
|
||||
} else {
|
||||
argv_array_push(out, *var);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static int clone_submodule(const char *path, const char *gitdir, const char *url,
|
||||
const char *depth, const char *reference, int quiet)
|
||||
{
|
||||
@ -618,22 +570,6 @@ static int module_clone(int argc, const char **argv, const char *prefix)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int module_sanitize_config(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
struct strbuf sanitized_config = STRBUF_INIT;
|
||||
|
||||
if (argc > 1)
|
||||
usage(_("git submodule--helper sanitize-config"));
|
||||
|
||||
git_config_from_parameters(sanitize_submodule_config, &sanitized_config);
|
||||
if (sanitized_config.len)
|
||||
printf("%s\n", sanitized_config.buf);
|
||||
|
||||
strbuf_release(&sanitized_config);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct submodule_update_clone {
|
||||
/* index into 'list', the list of submodules to look into for cloning */
|
||||
int current;
|
||||
@ -906,7 +842,6 @@ static struct cmd_struct commands[] = {
|
||||
{"list", module_list},
|
||||
{"name", module_name},
|
||||
{"clone", module_clone},
|
||||
{"sanitize-config", module_sanitize_config},
|
||||
{"update-clone", update_clone},
|
||||
{"resolve-relative-url", resolve_relative_url},
|
||||
{"resolve-relative-url-test", resolve_relative_url_test},
|
||||
|
Reference in New Issue
Block a user