Re: [PATCH 09/17] midx: do not require packs to be sorted in lexicographic order
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Dec 9, 2025, 02:07 UTC
- Message-ID
- <aTeEZX4036A9YecX@nand.local>
- In-Reply-To
- <aTcYbRt-aUIcym77@pks.im>
On Mon, Dec 08, 2025 at 07:26:53PM +0100, Patrick Steinhardt wrote:
Show 10 quoted lines
> On Sat, Dec 06, 2025 at 03:31:25PM -0500, Taylor Blau wrote: > > Note that this produces MIDXs which may be incompatible with earlier > > versions of Git that have stricter requirements on the layout of packs > > within a MIDX. This patch does *not* modify the version number of the > > MIDX format, since existing versions of Git already know to gracefully > > ignore a MIDX with packs that appear out-of-order. > > Interesting. Did you verify how other implementations of Git behave if > we start to relax this requirement? It seems like a somewhat dangerous > assumption to me that this will just continue to work.
That's a great point. It looks like current libgit2 assumes[1] that the list is sorted and complains loudly if it is not. Presumably other implementations behave similarly.
I think that is a compelling enough argument to swing us towards bumping the version number to avoid compatibility issues.
> Also, is there a reason why you prefer this over bumping the version > number?
I was trying to avoid having all existing Git clients be unable to read v2 MIDXs for such a seemingly minor change, but I think the above compels us to.
> I assume that it cannot happen that we append to the array of MIDX'd > packs after we have sorted. It would mean that the MIDX somehow changed > its representation or was amended to, which isn't possible.
That's right.
Thanks, Taylor
[1]: https://github.com/libgit2/libgit2/blob/v1.9.2/src/libgit2/midx.c#L75-L76