diff options
author | Jonathan Tan <jonathantanmy@google.com> | 2021-10-09 00:08:18 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-10-09 01:06:06 +0300 |
commit | eef71904ff68e90f2db37aa9e25fe82c3fccf2a0 (patch) | |
tree | eece2d56814c5a970e2b7d7aa7389724c3e4677f /object-file.c | |
parent | 155b517d5c8701f3b8bef78fe59d8fe33adbee96 (diff) |
object-file: only register submodule ODB if needed
In a35e03dee0 ("submodule: lazily add submodule ODBs as alternates",
2021-09-08), Git was taught to add all known submodule ODBs as
alternates when attempting to read an object that doesn't exist, as a
fallback for when a submodule object is read as if it were in
the_repository. However, this behavior wasn't restricted to happen only
when reading from the_repository. Fix this.
Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object-file.c')
-rw-r--r-- | object-file.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/object-file.c b/object-file.c index be4f94ecf3..0a1835fe30 100644 --- a/object-file.c +++ b/object-file.c @@ -1614,7 +1614,14 @@ static int do_oid_object_info_extended(struct repository *r, break; } - if (register_all_submodule_odb_as_alternates()) + /* + * If r is the_repository, this might be an attempt at + * accessing a submodule object as if it were in the_repository + * (having called add_submodule_odb() on that submodule's ODB). + * If any such ODBs exist, register them and try again. + */ + if (r == the_repository && + register_all_submodule_odb_as_alternates()) /* We added some alternates; retry */ continue; |