Merge branch 'sb/submodule-parallel-update'
A major part of "git submodule update" has been ported to C to take advantage of the recently added framework to run download tasks in parallel. * sb/submodule-parallel-update: clone: allow an explicit argument for parallel submodule clones submodule update: expose parallelism to the user submodule helper: remove double 'fatal: ' prefix git submodule update: have a dedicated helper for cloning run_processes_parallel: rename parameters for the callbacks run_processes_parallel: treat output of children as byte array submodule update: direct error message to stderr fetching submodules: respect `submodule.fetchJobs` config option submodule-config: drop check against NULL submodule-config: keep update strategy around
This commit is contained in:
@ -59,6 +59,7 @@ static void free_one_config(struct submodule_entry *entry)
|
||||
{
|
||||
free((void *) entry->config->path);
|
||||
free((void *) entry->config->name);
|
||||
free((void *) entry->config->update_strategy.command);
|
||||
free(entry->config);
|
||||
}
|
||||
|
||||
@ -194,6 +195,8 @@ static struct submodule *lookup_or_create_by_name(struct submodule_cache *cache,
|
||||
|
||||
submodule->path = NULL;
|
||||
submodule->url = NULL;
|
||||
submodule->update_strategy.type = SM_UPDATE_UNSPECIFIED;
|
||||
submodule->update_strategy.command = NULL;
|
||||
submodule->fetch_recurse = RECURSE_SUBMODULES_NONE;
|
||||
submodule->ignore = NULL;
|
||||
|
||||
@ -293,7 +296,7 @@ static int parse_config(const char *var, const char *value, void *data)
|
||||
if (!strcmp(item.buf, "path")) {
|
||||
if (!value)
|
||||
ret = config_error_nonbool(var);
|
||||
else if (!me->overwrite && submodule->path != NULL)
|
||||
else if (!me->overwrite && submodule->path)
|
||||
warn_multiple_config(me->commit_sha1, submodule->name,
|
||||
"path");
|
||||
else {
|
||||
@ -317,7 +320,7 @@ static int parse_config(const char *var, const char *value, void *data)
|
||||
} else if (!strcmp(item.buf, "ignore")) {
|
||||
if (!value)
|
||||
ret = config_error_nonbool(var);
|
||||
else if (!me->overwrite && submodule->ignore != NULL)
|
||||
else if (!me->overwrite && submodule->ignore)
|
||||
warn_multiple_config(me->commit_sha1, submodule->name,
|
||||
"ignore");
|
||||
else if (strcmp(value, "untracked") &&
|
||||
@ -333,13 +336,23 @@ static int parse_config(const char *var, const char *value, void *data)
|
||||
} else if (!strcmp(item.buf, "url")) {
|
||||
if (!value) {
|
||||
ret = config_error_nonbool(var);
|
||||
} else if (!me->overwrite && submodule->url != NULL) {
|
||||
} else if (!me->overwrite && submodule->url) {
|
||||
warn_multiple_config(me->commit_sha1, submodule->name,
|
||||
"url");
|
||||
} else {
|
||||
free((void *) submodule->url);
|
||||
submodule->url = xstrdup(value);
|
||||
}
|
||||
} else if (!strcmp(item.buf, "update")) {
|
||||
if (!value)
|
||||
ret = config_error_nonbool(var);
|
||||
else if (!me->overwrite &&
|
||||
submodule->update_strategy.type != SM_UPDATE_UNSPECIFIED)
|
||||
warn_multiple_config(me->commit_sha1, submodule->name,
|
||||
"update");
|
||||
else if (parse_submodule_update_strategy(value,
|
||||
&submodule->update_strategy) < 0)
|
||||
die(_("invalid value for %s"), var);
|
||||
}
|
||||
|
||||
strbuf_release(&name);
|
||||
|
||||
Reference in New Issue
Block a user