From: Derrick Stolee Date: Tue, 25 Sep 2018 14:29:44 GMT Subject: Re: [PATCH 1/1] read-cache: update index format default to v4 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: > 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 >>> >>> 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