From: Ben Peart <peartben@gmail.com>
To: Stefan Beller <sbeller@google.com>,
Derrick Stolee <stolee@gmail.com>,
Matthias Sohn <matthias.sohn@gmail.com>
Cc: "Patrick Steinhardt" <ps@pks.im>,
"SZEDER Gábor" <szeder.dev@gmail.com>,
gitgitgadget@gmail.com, git <git@vger.kernel.org>,
"Duy Nguyen" <pclouds@gmail.com>,
"Jeff Hostetler" <git@jeffhostetler.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Derrick Stolee" <dstolee@microsoft.com>,
"Jonathan Nieder" <jrnieder@gmail.com>
Subject: Re: [PATCH 1/1] read-cache: update index format default to v4
Date: Tue, 25 Sep 2018 17:22:53 -0400 [thread overview]
Message-ID: <c05896d5-0b0a-9349-3c6d-9e658cd495ca@gmail.com> (raw)
In-Reply-To: <CAGZ79kZEN9pSBAdVajfRrrb_D3twD+C7hnzZti+TqO0-sVp9PA@mail.gmail.com>
On 9/25/2018 2:01 PM, Stefan Beller wrote:
> On Tue, Sep 25, 2018 at 7:30 AM Derrick Stolee <stolee@gmail.com> wrote:
>>
>> 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@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.
>
> JGit is used both on the server (which doesn't use index/staging area)
> as well as client side as e.g. an Eclipse integration, which would
> very much like to use the index.
>
> Adding Matthias Sohn as well, who is active in JGit and cares
> more about the client side than Googlers who only make use
> of the server side part of JGit.
>
> Stefan
>
In addition to the compatibility with other implementations of git
question, I think we should include Duy's patch [1] to "optimize reading
index format v4" before flipping the default to V4.
In my testing, this reduced the index load time of V4 by 10%-15% making
the CPU cost only ~2% more expensive than V2 or V3 indexes. This
increase in CPU cost is more than offset by the significant reduction in
file IO due to the reduced index file size.
[1] https://public-inbox.org/git/20180825064458.28484-1-pclouds@gmail.com/
next prev parent reply other threads:[~2018-09-25 21:23 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-24 21:15 [PATCH 0/1] read-cache: update index format default to v4 Derrick Stolee via GitGitGadget
2018-09-24 21:15 ` [PATCH 1/1] " Derrick Stolee via GitGitGadget
2018-09-24 21:32 ` SZEDER Gábor
2018-09-24 22:29 ` Junio C Hamano
2018-09-25 7:06 ` Patrick Steinhardt
2018-09-25 14:29 ` Derrick Stolee
2018-09-25 18:01 ` Stefan Beller
2018-09-25 21:22 ` Ben Peart [this message]
2018-09-26 21:03 ` Matthias Sohn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c05896d5-0b0a-9349-3c6d-9e658cd495ca@gmail.com \
--to=peartben@gmail.com \
--cc=dstolee@microsoft.com \
--cc=git@jeffhostetler.com \
--cc=git@vger.kernel.org \
--cc=gitgitgadget@gmail.com \
--cc=gitster@pobox.com \
--cc=jrnieder@gmail.com \
--cc=matthias.sohn@gmail.com \
--cc=pclouds@gmail.com \
--cc=ps@pks.im \
--cc=sbeller@google.com \
--cc=stolee@gmail.com \
--cc=szeder.dev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).