Re: [PATCH 1/5] loose: load loose object map for the correct source
Toon Claes <[email protected]> Thu, 30 Jul 2026 14:47:50 +0200
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
Justin Tobler <[email protected]> writes: > On 26/07/24 05:48AM, Patrick Steinhardt wrote: >> When loading the loose object map via `load_one_loose_object_map()` we >> pass in both a repository and the corresponding source. We ultimately >> don't really respect the passed-in source though as we instead always >> load the map via the common directory. This doesn't make any sense >> though, as the function is called in a loop through all sources, and as >> such the expectation is that we'll load the map that belongs to the >> given source. >> >> Fix this bug by instead loading the map via the loose source's path. > > IIUC the primary source is always being used, does this mean that > repositories using a compat hash and alternates are currently broken? Yeah, the commit message seems to undersell this fix. I think it wouldn't hurt to add a small test for this: test_expect_success 'rev-parse maps oid of object borrowed from alternate' ' test_when_finished rm -rf alt borrow && git init --object-format=sha256 alt && git -C alt config extensions.compatObjectFormat sha1 && test_commit -C alt A && git init --object-format=sha256 borrow && git -C borrow config extensions.compatObjectFormat sha1 && echo "$PWD/alt/.git/objects" >borrow/.git/objects/info/alternates && oid=$(git -C alt rev-parse HEAD) && git -C alt rev-parse --output-object-format=sha1 "$oid" >expect && git -C borrow rev-parse --output-object-format=sha1 "$oid" >actual && test_cmp expect actual ' -- Cheers, Toon