|
15 | 15 | #include "thread-utils.h" |
16 | 16 |
|
17 | 17 | static int config_fetch_recurse_submodules = RECURSE_SUBMODULES_ON_DEMAND; |
| 18 | +static int parallel_jobs = 1; |
18 | 19 | static struct string_list changed_submodule_paths; |
19 | 20 | static int initialized_fetch_ref_tips; |
20 | 21 | static struct sha1_array ref_tips_before_fetch; |
@@ -169,7 +170,12 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt, |
169 | 170 |
|
170 | 171 | int submodule_config(const char *var, const char *value, void *cb) |
171 | 172 | { |
172 | | - if (starts_with(var, "submodule.")) |
| 173 | + if (!strcmp(var, "submodule.fetchjobs")) { |
| 174 | + parallel_jobs = git_config_int(var, value); |
| 175 | + if (parallel_jobs < 0) |
| 176 | + die(_("negative values not allowed for submodule.fetchJobs")); |
| 177 | + return 0; |
| 178 | + } else if (starts_with(var, "submodule.")) |
173 | 179 | return parse_submodule_config_option(var, value); |
174 | 180 | else if (!strcmp(var, "fetch.recursesubmodules")) { |
175 | 181 | config_fetch_recurse_submodules = parse_fetch_recurse_submodules_arg(var, value); |
@@ -771,6 +777,9 @@ int fetch_populated_submodules(const struct argv_array *options, |
771 | 777 | argv_array_push(&spf.args, "--recurse-submodules-default"); |
772 | 778 | /* default value, "--submodule-prefix" and its value are added later */ |
773 | 779 |
|
| 780 | + if (max_parallel_jobs < 0) |
| 781 | + max_parallel_jobs = parallel_jobs; |
| 782 | + |
774 | 783 | calculate_changed_submodule_paths(); |
775 | 784 | run_processes_parallel(max_parallel_jobs, |
776 | 785 | get_next_submodule, |
@@ -1117,3 +1126,8 @@ void connect_work_tree_and_git_dir(const char *work_tree, const char *git_dir) |
1117 | 1126 | strbuf_release(&rel_path); |
1118 | 1127 | free((void *)real_work_tree); |
1119 | 1128 | } |
| 1129 | + |
| 1130 | +int parallel_submodules(void) |
| 1131 | +{ |
| 1132 | + return parallel_jobs; |
| 1133 | +} |
0 commit comments