From: Patrick Steinhardt <ps@pks.im>
To: "brian m. carlson" <sandals@crustytoothpaste.net>,
Junio C Hamano <gitster@pobox.com>,
git@vger.kernel.org, Karthik Nayak <karthik.188@gmail.com>,
K Jayatheerth <jayatheerthkulkarni2005@gmail.com>,
ryenus@gmail.com
Subject: Re: [PATCH 1/2] BreakingChanges: announce switch to "reftable" format
Date: Thu, 3 Jul 2025 06:43:33 +0200 [thread overview]
Message-ID: <aGYKdYGvCIGR_YF3@pks.im> (raw)
In-Reply-To: <aGWi1bZMlbKCgB74@fruit.crustytoothpaste.net>
On Wed, Jul 02, 2025 at 09:21:25PM +0000, brian m. carlson wrote:
> On 2025-07-02 at 17:03:25, Junio C Hamano wrote:
> > Patrick Steinhardt <ps@pks.im> writes:
> >
> > > diff --git a/Documentation/BreakingChanges.adoc b/Documentation/BreakingChanges.adoc
> > > index c6bd94986c5..c96b5319cdd 100644
> > > --- a/Documentation/BreakingChanges.adoc
> > > +++ b/Documentation/BreakingChanges.adoc
> > > @@ -118,6 +118,45 @@ Cf. <2f5de416-04ba-c23d-1e0b-83bb655829a7@zombino.com>,
> > > <20170223155046.e7nxivfwqqoprsqj@LykOS.localdomain>,
> > > <CA+EOSBncr=4a4d8n9xS4FNehyebpmX8JiUwCsXD47EQDE+DiUQ@mail.gmail.com>.
> > >
> > > +* The default storage format for references in newly created repositories will
> > > + be changed from "files" to "reftable". The "reftable" format provides
> > > + multiple advantages over the "files" format:
> > > ++
> > > + ** It is impossible to store two references that only differ in casing on
> > > ...
> > > + ** Writing many references at once is slow with the "files" backend because
> > > + every reference is created as a separate file. The "reftable" backend
> > > + significantly outperforms the "files" backend by multiple orders of
> > > + magnitude.
> >
> > These list benefits of using "reftable". Can we also add one point
> > that stresses why we want to make it the default? Something like
> > "Having to do X once per user to make them opt-in is too cumbersome"
> > is probably good enough.
>
> Maybe an additional line about "most people pick the default option and,
> given the information above, we think that users will have a better
> experience with reftable as the default" (especially, in my view, users
> on case-insensitive file systems).
Yup, makes sense. This is what I've queued:
Users that get immediate benefit from the "reftable" backend could
continue to opt-in to the "reftable" format manually by setting the
"init.defaultRefFormat" config. But defaults matter, and we think
that overall users will have a better experience with less
platform-specific quirks with the new backend.
> > > +A prerequisite for this change is that the ecosystem is ready to support the
> > > +"reftable" format. Most importantly, alternative implementations of Git like
> > > +JGit, libgit2 and Gitoxide need to support it.
> >
> > ... in order for them to access the same repository.
> >
> > How common is it to use a single repository from these multiple
> > implementations these days, I have to wonder?
>
> Pretty common. I know Rust's Cargo package manager uses libgit2 and I'm
> sure there are other development tools that do so. At a previous
> employer, we had a linting tool that used libgit2 and we used
> command-line Git for normal operations. I don't work with Java on a
> regular basis, but I expect that similar kinds of things happen there,
> especially in Java-based IDEs.
Yeah, I have hit issues with Cargo myself. JGit users should be mostly
fine as it already supports reftables, but IIRC it only supported v0 of
the format where there is no explicit hash function yet.
I'll try to engage with the respective communities and figure out a way
forward to get reftable support landed. For libgit2 I might be able to
have my team do it. For Gitoxide I plan to have a chat with Byron to
figure something out. The missing support for explicit hash functions in
JGit I've already mentioned to folks.
> > > diff --git a/t/t0001-init.sh b/t/t0001-init.sh
> > > index f11a40811f2..e0f27484192 100755
> > > --- a/t/t0001-init.sh
> > > +++ b/t/t0001-init.sh
> > > @@ -658,6 +658,22 @@ test_expect_success 'init warns about invalid init.defaultRefFormat' '
> > > test_cmp expected actual
> > > '
> > >
> > > +test_expect_success 'default ref format' '
> > > + test_when_finished "rm -rf refformat" &&
> > > + (
> > > + sane_unset GIT_DEFAULT_REF_FORMAT &&
> > > + git init refformat
> > > + ) &&
> > > + if test_have_prereq WITH_BREAKING_CHANGES
> > > + then
> > > + echo reftable >expect
> > > + else
> > > + echo files >expect
> > > + fi &&
> > > + git -C refformat rev-parse --show-ref-format >actual &&
> > > + test_cmp expect actual
> > > +'
>
> I might just make a recommendation here for a `default-ref-format` key
> (or some similar name) to `git version --build-options` as well. That
> will get put in bug reports and troubleshooting output and will help
> people figure out what might be going wrong if there are any problems.
D'oh, obviously, given that I have recommended the same on your series
:P
Patrick
next prev parent reply other threads:[~2025-07-03 4:43 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-02 10:14 [PATCH 0/2] Add reftable by default as a breaking change Patrick Steinhardt
2025-07-02 10:14 ` [PATCH 1/2] BreakingChanges: announce switch to "reftable" format Patrick Steinhardt
2025-07-02 17:03 ` Junio C Hamano
2025-07-02 21:21 ` brian m. carlson
2025-07-03 4:43 ` Patrick Steinhardt [this message]
2025-07-03 4:43 ` Patrick Steinhardt
2025-07-02 17:17 ` Justin Tobler
2025-07-03 5:00 ` Patrick Steinhardt
2025-07-02 10:14 ` [PATCH 2/2] setup: use "reftable" format when experimental features are enabled Patrick Steinhardt
2025-07-03 6:15 ` [PATCH v2 0/2] Add reftable by default as a breaking change Patrick Steinhardt
2025-07-03 6:15 ` [PATCH v2 1/2] BreakingChanges: announce switch to "reftable" format Patrick Steinhardt
2025-07-03 10:54 ` Karthik Nayak
2025-07-03 11:42 ` Patrick Steinhardt
2025-07-03 12:24 ` Karthik Nayak
2025-07-03 13:08 ` Patrick Steinhardt
2025-07-03 6:15 ` [PATCH v2 2/2] setup: use "reftable" format when experimental features are enabled Patrick Steinhardt
2025-07-07 5:37 ` [PATCH v2 0/2] Add reftable by default as a breaking change Junio C Hamano
2025-07-04 9:42 ` [PATCH v3 " Patrick Steinhardt
2025-07-04 9:42 ` [PATCH v3 1/2] BreakingChanges: announce switch to "reftable" format Patrick Steinhardt
2025-07-04 9:42 ` [PATCH v3 2/2] setup: use "reftable" format when experimental features are enabled Patrick Steinhardt
2025-07-04 13:14 ` [PATCH v3 0/2] Add reftable by default as a breaking change Karthik Nayak
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aGYKdYGvCIGR_YF3@pks.im \
--to=ps@pks.im \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jayatheerthkulkarni2005@gmail.com \
--cc=karthik.188@gmail.com \
--cc=ryenus@gmail.com \
--cc=sandals@crustytoothpaste.net \
/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.
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 NNTP newsgroup(s).