Re: [PATCH 1/5] loose: load loose object map for the correct source

Patrick Steinhardt <[email protected]> Tue, 4 Aug 2026 09:21:03 +0200
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
On Thu, Jul 30, 2026 at 02:47:50PM +0200, Toon Claes wrote:
> 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
>     '

Good idea indeed, will do. Thanks!

Patrick