]> git.ipfire.org Git - thirdparty/git.git/commit
odb: get rid of `the_repository` when handling submodule sources
authorPatrick Steinhardt <ps@pks.im>
Tue, 1 Jul 2025 12:22:23 +0000 (14:22 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 1 Jul 2025 21:46:37 +0000 (14:46 -0700)
commitfc28a8a856a1e7978794e7dee61c42d7d5740a6b
treed86bf61bdd4f201cb86998393087359b24fb5035
parent7eafd4472d7c273e10a408da6662ca9d4b9800fd
odb: get rid of `the_repository` when handling submodule sources

The "--recursive" flag for git-grep(1) allows users to grep for a string
across submodule boundaries. To make this work we add each submodule's
object sources to our own object database so that the objects can be
accessed directly.

The infrastructure for this depends on a global string list of submodule
paths. The caller is expected to call `add_submodule_odb_by_path()` for
each source and the object database will then eventually register all
submodule sources via `do_oid_object_info_extended()` in case it isn't
able to look up a specific object.

This reliance on global state is of course suboptimal with regards to
our libification efforts.

Refactor the logic so that the list of submodule sources is instead
tracked in the object database itself. This allows us to lose the
condition of `r == the_repository` before registering submodule sources
as we only ever add submodule sources to `the_repository` anyway. As
such, behaviour before and after this refactoring should always be the
same.

Rename the functions accordingly.

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