diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-01-12 15:16:54 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-01-12 15:16:54 -0800 |
commit | 187c0d3d9e63f7d84d7055372f07bedb52849f06 (patch) | |
tree | 18a498fa6c6e77288756cde5dfb3a84ed7bd4062 /builtin/fetch.c | |
parent | 7b9d1b9556b31fe5f661caa1e82856ca876f2a08 (diff) | |
parent | 62104ba14af4845c6c1ba1dab05fad4a289d806f (diff) | |
download | git-187c0d3d9e63f7d84d7055372f07bedb52849f06.tar.gz git-187c0d3d9e63f7d84d7055372f07bedb52849f06.tar.xz |
Merge branch 'sb/submodule-parallel-fetch'
Add a framework to spawn a group of processes in parallel, and use
it to run "git fetch --recurse-submodules" in parallel.
Rerolled and this seems to be a lot cleaner. The merge of the
earlier one to 'next' has been reverted.
* sb/submodule-parallel-fetch:
submodules: allow parallel fetching, add tests and documentation
fetch_populated_submodules: use new parallel job processing
run-command: add an asynchronous parallel child processor
sigchain: add command to pop all common signals
strbuf: add strbuf_read_once to read without blocking
xread: poll on non blocking fds
submodule.c: write "Fetching submodule <foo>" to stderr
Diffstat (limited to 'builtin/fetch.c')
-rw-r--r-- | builtin/fetch.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/builtin/fetch.c b/builtin/fetch.c index c85f3471d..586840d76 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -37,6 +37,7 @@ static int prune = -1; /* unspecified */ static int all, append, dry_run, force, keep, multiple, update_head_ok, verbosity; static int progress = -1, recurse_submodules = RECURSE_SUBMODULES_DEFAULT; static int tags = TAGS_DEFAULT, unshallow, update_shallow; +static int max_children = 1; static const char *depth; static const char *upload_pack; static struct strbuf default_rla = STRBUF_INIT; @@ -99,6 +100,8 @@ static struct option builtin_fetch_options[] = { N_("fetch all tags and associated objects"), TAGS_SET), OPT_SET_INT('n', NULL, &tags, N_("do not fetch all tags (--no-tags)"), TAGS_UNSET), + OPT_INTEGER('j', "jobs", &max_children, + N_("number of submodules fetched in parallel")), OPT_BOOL('p', "prune", &prune, N_("prune remote-tracking branches no longer on remote")), { OPTION_CALLBACK, 0, "recurse-submodules", NULL, N_("on-demand"), @@ -1213,7 +1216,8 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) result = fetch_populated_submodules(&options, submodule_prefix, recurse_submodules, - verbosity < 0); + verbosity < 0, + max_children); argv_array_clear(&options); } |