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 <dstolee@xxxxxxxxxxxxx>
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