Thanks Junio, Jeff and Eric for reviewing once again! * fixes as proposed by Junio for readability in parse_submodule_update_strategy * Do not leak the `url`, as found by Jeff. (I dug into the code of argv_array_pushl and you're obviously correct) Thanks, Stefan Interdiff to v13: diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index 65bdc14..c435c53 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -356,13 +356,11 @@ static int update_clone_inspect_next_task(struct child_process *cp, argv_array_pushl(&cp->args, "--path", sub->path, NULL); argv_array_pushl(&cp->args, "--name", sub->name, NULL); - argv_array_pushl(&cp->args, "--url", strdup(url), NULL); + argv_array_pushl(&cp->args, "--url", url, NULL); if (pp->reference) argv_array_push(&cp->args, pp->reference); if (pp->depth) argv_array_push(&cp->args, pp->depth); - - } cleanup: diff --git a/submodule.c b/submodule.c index b54d92d..051f722 100644 --- a/submodule.c +++ b/submodule.c @@ -219,7 +219,7 @@ void gitmodules_config(void) int parse_submodule_update_strategy(const char *value, struct submodule_update_strategy *dst) { - free((void*)dst->command); + free((void *)dst->command); dst->command = NULL; if (!strcmp(value, "none")) dst->type = SM_UPDATE_NONE; @@ -229,9 +229,9 @@ int parse_submodule_update_strategy(const char *value, dst->type = SM_UPDATE_REBASE; else if (!strcmp(value, "merge")) dst->type = SM_UPDATE_MERGE; - else if (value[0] == '!') { + else if (skip_prefix(value, "!", &value)) { dst->type = SM_UPDATE_COMMAND; - dst->command = xstrdup(value + 1); + dst->command = xstrdup(value); } else return -1; return 0; Stefan Beller (7): submodule-config: keep update strategy around submodule-config: drop check against NULL fetching submodules: respect `submodule.fetchJobs` config option submodule update: direct error message to stderr git submodule update: have a dedicated helper for cloning submodule update: expose parallelism to the user clone: allow an explicit argument for parallel submodule clones Documentation/config.txt | 6 + Documentation/git-clone.txt | 6 +- Documentation/git-submodule.txt | 7 +- builtin/clone.c | 19 +++- builtin/fetch.c | 2 +- builtin/submodule--helper.c | 237 ++++++++++++++++++++++++++++++++++++++++ git-submodule.sh | 54 ++++----- submodule-config.c | 19 +++- submodule-config.h | 2 + submodule.c | 37 ++++++- submodule.h | 18 +++ t/t5526-fetch-submodules.sh | 14 +++ t/t7400-submodule-basic.sh | 4 +- t/t7406-submodule-update.sh | 27 +++++ 14 files changed, 403 insertions(+), 49 deletions(-) -- 2.7.0.rc0.34.ga06e0b3.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html