submodule.c: sort changed_submodule_names before searching it

We can string_list_insert() to maintain sorted-ness of the
list as we find new items, or we can string_list_append() to
build an unsorted list and sort it at the end just once.

As we do not rely on the sortedness while building the
list, we pick the "append and sort at the end" as it
has better worst case execution times.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Stefan Beller 2018-11-28 16:27:50 -08:00 коммит произвёл Junio C Hamano
Родитель 25e3d28efd
Коммит 08a297bd49
1 изменённых файлов: 2 добавлений и 1 удалений

Просмотреть файл

@ -1283,7 +1283,7 @@ static int get_next_submodule(struct child_process *cp,
case RECURSE_SUBMODULES_DEFAULT: case RECURSE_SUBMODULES_DEFAULT:
case RECURSE_SUBMODULES_ON_DEMAND: case RECURSE_SUBMODULES_ON_DEMAND:
if (!submodule || if (!submodule ||
!unsorted_string_list_lookup( !string_list_lookup(
&changed_submodule_names, &changed_submodule_names,
submodule->name)) submodule->name))
continue; continue;
@ -1377,6 +1377,7 @@ int fetch_populated_submodules(struct repository *r,
/* default value, "--submodule-prefix" and its value are added later */ /* default value, "--submodule-prefix" and its value are added later */
calculate_changed_submodule_paths(r); calculate_changed_submodule_paths(r);
string_list_sort(&changed_submodule_names);
run_processes_parallel(max_parallel_jobs, run_processes_parallel(max_parallel_jobs,
get_next_submodule, get_next_submodule,
fetch_start_failure, fetch_start_failure,