Subject: Re: RFC: A configuration design for future-proofing fsync() configuration

From: Junio C Hamano <[email-masked]>
Date: Thu, 11 Nov 2021 10:03:10 -0800

Ævar Arnfjörð Bjarmason <[email-masked]> writes:

> Continuing a discussion from [1] currently we have:
>
>     ; Defaults to 'false'
>     core.fsyncObjectFiles = [true|false]
>
> In master..next this has been extended to this by Neeraj:
>
>    core.fsyncObjectFiles = [true|false|batch]
>
> Which, as an aside I hadn't considered before and I think we need to
> change before it lands on "master", we really don't want config users
> want to enable that makes older versions hard die. It's annoying to want
> to configure a new thing and not being able to put it in .gitconfig
> because older versions die on it:
>
>     $ git -c core.fsyncObjectFiles=batch status; echo $?
>     fatal: bad boolean config value 'batch' for 'core.fsyncobjectfiles'
>     128

But then it is also annoying to find out that the shiny new toy you
thought you configured silently is not kicking in.  I actually think
Neeraj's "if you are in a mixed environment, you need to be aware of
which copies of Git you use are prepared to use it" would be better
for end users.

For us Git developers, it would be less convenient, though.