Subject: Re: MIDX woes, was Re: [ANNOUNCE] Git v2.54.0-rc2

From: Derrick Stolee <[email-masked]>
Date: Thu, 16 Apr 2026 09:24:31 -0400

On 4/16/2026 1:34 AM, Jeff King wrote:
> On Thu, Apr 16, 2026 at 01:17:33AM -0400, Jeff King wrote:
> 
>> I think removing the .midx file (and optionally regenerating with the
>> old version) would be the appropriate workaround, but I wonder how hard
>> it would be to go back to generating v1 midx files by default. I know v2
>> is a building block for more advanced features, but for those who are
>> not using those features yet it is a strict regression.
> 
> I think doing so is just this one-liner:
...
> and then here we need to use v2 for the new compaction feature:
...
> So that would make things work as usual for anybody mixing and matching
> multiple versions of Git, but does make life slightly worse for anybody
> who wants to use the new feature (they have to set the config). We might
> need a doc update, or possibly even to automatically default to v2 when
> using the compact command. But that could come post-2.54.
> 
> At this point I'll stop poking and speculating and see what direction
> Taylor suggests. ;)

I think this is a good change to make. This fits with the standard
approach of not making breaking file changes by default, but letting
users opt-in to new versions (at least for a few major releases).

The part that is striking about Johannes' report is that this happens
on a fetch, so it is being written automatically by normal maintenance
activities in that case. Without downgrading the default version back
to a compatible version, deleting the multi-pack-index(es) will not
keep the repo in a good state.

As for the multi-pack-index being optional, I agree that we _could_
have a more graceful fallback to the pack-indexes when we don't
recognize the file format version. This should still be a very visible
warning as it can be an important performance feature, so users should
be notified when it isn't working as they expect. (This can be done
separately from this late-in-rc change for the default version.)

Thanks,
-Stolee