Re: [PATCH 1/1] read-cache: update index format default to v4
- From
Derrick Stolee <stolee@gmail.com>
- Date
- Sep 25, 2018, 14:29 UTC
- Message-ID
- <4d276a77-0ac9-c1d1-b5de-3ded394efb0b@gmail.com>
- In-Reply-To
- <20180925070618.GB1596@xps>
On 9/25/2018 3:06 AM, Patrick Steinhardt wrote:
Show 12 quoted lines
> On Mon, Sep 24, 2018 at 11:32:23PM +0200, SZEDER Gábor wrote: >> On Mon, Sep 24, 2018 at 02:15:30PM -0700, Derrick Stolee via GitGitGadget wrote: >>> From: Derrick Stolee <dstolee@microsoft.com> >>> >>> The index v4 format has been available since 2012 with 9d22778 >>> "reach-cache.c: write prefix-compressed names in the index". Since >>> the format has been stable for so long, almost all versions of Git >>> in use today understand version 4, removing one barrier to upgrade >>> -- that someone may want to downgrade and needs a working repo. >> What about alternative implementations, like JGit, libgit2, etc.? > Speaking of libgit2, we are able to read and write index v4 since > commit c1b370e93
This is a good point, Szeder.
Patrick: I'm glad LibGit2 is up-to-date with index formats.
Unfortunately, taking a look (for the first time) at the JGit code reveals that they don't appear to have v4 support. In org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java, the DirCache.readFrom() method: lines 488-494, I see the following snippet:
final int ver = NB.decodeInt32(hdr, 4); boolean extended = false; if (ver == 3) extended = true; else if (ver != 2) throw new CorruptObjectException(MessageFormat.format( JGitText.get().unknownDIRCVersion, Integer.valueOf(ver)));
It looks like this will immediately throw with versions other than 2 or 3.
I'm adding Jonathan Nieder to CC so he can check with JGit people about the impact of this change.
Thanks,
-Stolee