Subject: Re: [RFC/PATCH] config: add core.trustmtime

From: Torsten Bögershausen <[email-masked]>
Date: Tue, 01 Dec 2015 06:57:05 +0100

On 11/30/2015 08:05 PM, Junio C Hamano wrote:
> Ævar Arnfjörð Bjarmason <[email-masked]> writes:
>
>> Maybe I'm missing some really common breakage with st_mtime on some
>> system, but having a feature the user explicitly enables turn itself
>> off and doing FS-testing that takes 10 seconds when it's enabled seems
>> like the wrong default to me.
>>
>> We don't do it with core.fileMode, core.ignorecase or core.trustctime
>> or core.symlinks. Do we really need to be treating this differently?
> I share the exact thought.  I was looking the other way when
> untracked-cache was done originally ;-), and I would also want to
> know the answers to the above questions.
Maybe somewhat off topic, but:

Create a repo under Linux:
Linux will probe the FS and will set
core.filemode true
core.ignorecase false.

Export it using SAMBA to Windows or Mac OS X.
In some magical way the mounted repo becomes case-insensitive under
both Mac and Windows, even if core.ignorecase is true in the config file.

Same for filemode:
(Git for Windows doesn't see the execute bit at all, but relies on 
core.filemode anyway)
Depending how the repo is mounted on the Mac, the execute bits may work, 
be always 0 or always 1.

Relying on this kind of config files is not ideal in a networked 
environment.
It is not ideal when different implementations of Git access the same repo,
(Git for Windows vs cygwin vs Egit/Jgit)

So I think that the original patch could make Git unreliable under some 
circumstances.

And some day I may send a patch which does a quick auto-probe for 
filemode and ignorecase,
to adjust Git to what the underlying "local OS - network - remote OS - 
remote FS" really achieves.