Subject: Re: Odd Difference Between Windows Git and Standard Git

From: Torsten Bögershausen <[email-masked]>
Date: Wed, 25 May 2016 06:36:09 +0200

On 05/24/2016 01:57 PM, Johannes Schindelin wrote:
> Hi,
>
> On Tue, 24 May 2016, Torsten Bögershausen wrote:
>
>> On 05/23/2016 08:52 PM, Junio C Hamano wrote:
>>> Johannes Schindelin <[email-masked]> writes:
>>>
>>>>> Of course, if you are doing network mount between systems with and
>>>>> without filemode support, the result would depend on where you did
>>>>> the "git init", so that would not help.
>>>>>
>>>>> Which means that other probed things like symlink support and case
>>>>> sensitivity are likely to be wrong in the .git/config that the
>>>>> user may want to fix.
>>>> What we could do is to make the default config setting
>>>> platform-dependent, a la CRLF_NATIVE.
>>>>
>>>> I imagine that we would want this for core.filemode, core.ignorecase and
>>>> core.symlinks.
>>>>
>>>> What do you think?
>>> The reason why we probe for filemode, icase, etc. at repository
>>> creation time and record the result in the configuration is because we
>>> do not to want to do the auto-probing at runtime, every time we run
>>> any Git command.
> Right, I missed this of course. My idea was to have saner defaults *iff
> the config variables are not set explicitly*. But they *are* set, of
> course. Just not in a way that makes sense when the very same working
> directory is accessed from different Operating Systems.
>
>> if core.filemode is true, Git for Windows could:
>> a) Behave as today, report changed files (filemode)
>> b) Give warning to the user (and report changed filemode)
>> c) Error out, saying misconfigured worktree
>> d) use core.filemode = false anyway.
>> e) Give a warning and use core.filemode = false anyway.
>>
>> At the moment I tend for c), as it makes it clear what is going wrong,
>> what do you think ?
> The problem with that is that we would need to probe again.
The probing for the filemode:
Wouldn't it be enough to run lstat() on .git/ ?
If the user-execuatable bit is not set, but core.filemode is true, error 
out ?
That would not cost too much.
>   Or dictate for
> all eternity that Git for Windows cannot determine the executable bit (but
> who knows for certain?)
Can we can limit the eternity until the day when Windows can determine 
the executable
bit ?