]> Kevux Git Server - rit/commitdiff
builtin/grep: simplify how we preload packs
authorPatrick Steinhardt <ps@pks.im>
Thu, 9 Oct 2025 08:01:37 +0000 (10:01 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Oct 2025 21:42:39 +0000 (14:42 -0700)
When using multiple threads in git-grep(1) we eagerly preload both the
gitmodules file as well as the packfiles so that the threads won't race
with one another to initialize these data structures.

For packfiles, this is done by calling `packfile_store_get_packs()`,
which first loads our packfiles and then returns a pointer to the first
such packfile. This pointer is ignored though, as all we really care
about is that `packfile_store_prepare()` was called.

Historically, that function was file-local to "packfile.c", but that
changed with 4188332569 (packfile: move `get_multi_pack_index()` into
"midx.c", 2025-09-02). We can thus simplify the code by calling that
function directly.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/grep.c

index 13841fb..53cccf2 100644 (file)
@@ -1214,7 +1214,7 @@ int cmd_grep(int argc,
                if (recurse_submodules)
                        repo_read_gitmodules(the_repository, 1);
                if (startup_info->have_repository)
-                       (void)packfile_store_get_packs(the_repository->objects->packfiles);
+                       packfile_store_prepare(the_repository->objects->packfiles);
 
                start_threads(&opt);
        } else {