Re: [PATCH 1/2] BreakingChanges: announce switch to "reftable" format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2025-07-02 at 17:03:25, Junio C Hamano wrote:
> Patrick Steinhardt <ps@xxxxxx> 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@xxxxxxxxxxx>,
> >  <20170223155046.e7nxivfwqqoprsqj@LykOS.localdomain>,
> >  <CA+EOSBncr=4a4d8n9xS4FNehyebpmX8JiUwCsXD47EQDE+DiUQ@xxxxxxxxxxxxxx>.
> >  
> > +* 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).

> > +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.

> > 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.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux