From: Torsten Bögershausen Date: Wed, 25 May 2016 04:36:09 GMT Subject: Re: Odd Difference Between Windows Git and Standard Git Message-ID: <57452BB9.5090500@web.de> In-Reply-To: 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 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 ?