]> git.ipfire.org Git - thirdparty/git.git/commitdiff
odb: stop splitting alternate in `odb_add_to_alternates_file()`
authorPatrick Steinhardt <ps@pks.im>
Thu, 11 Dec 2025 09:30:13 +0000 (10:30 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 11 Dec 2025 09:39:36 +0000 (18:39 +0900)
When calling `odb_add_to_alternates_file()` we know to add the newly
added source to the object database in case we have already loaded
alternates. This is done so that we can make its objects accessible
immediately without having to fully reload all alternates.

The way we do this though is to call `link_alt_odb_entries()`, which
adds _multiple_ sources to the object database source in case we have
newline-separated entries. This behaviour is not documented in the
function documentation of `odb_add_to_alternates_file()`, and all
callers only ever pass a single directory to it. It's thus entirely
surprising and a conceptual mismatch.

Fix this issue by directly calling `odb_add_alternate_recursively()`
instead.

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

diff --git a/odb.c b/odb.c
index e314f86c3b843ddee6804b5d03a9089538b7bc74..3112eab5d03ed1d7caee51faf85e4254415c54c8 100644 (file)
--- a/odb.c
+++ b/odb.c
@@ -338,7 +338,7 @@ void odb_add_to_alternates_file(struct object_database *odb,
                if (commit_lock_file(&lock))
                        die_errno(_("unable to move new alternates file into place"));
                if (odb->loaded_alternates)
-                       link_alt_odb_entries(odb, dir, '\n', NULL, 0);
+                       odb_add_alternate_recursively(odb, dir, 0);
        }
        free(alts);
 }