Re: Unexpected ignorecase=false behavior on Windows

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

 



On 22.06.2018 22:58, Bryan Turner wrote:
On Fri, Jun 22, 2018 at 1:45 PM Marc Strapetz <marc.strapetz@xxxxxxxxxxx> wrote:

On 22.06.2018 19:36, Johannes Sixt wrote:
Am 22.06.2018 um 14:04 schrieb Marc Strapetz:
On Windows, when creating following repository:

$ git init
$ echo "1" > file.txt
$ git add .
$ git commit -m "initial import"
$ ren file.txt File.txt
$ git config core.ignorecase false

This is a user error. core.ignorecase is *not* an instruction as in
"hey, Git, do not ignore the case of file names". It is better regarded
as an internal value, with which Git remembers how it should treat the
names of files that it receives when it traverses the directories on the
disk.

Git could probe the file system capabilities each time it runs. But that
would be wasteful. Hence, this probe happens only once when the
repository is initialized, and the result is recorded in this
configuration value. You should not change it.

Sorry, it looks like my example was misleading. I'm actually questioning
current behavior in case of Windows repositories with core.ignorecase
initialized to false, like in following setup:

$ git init
$ git config core.ignorecase false

The repository is now set up to be case-sensitive on Windows. From this
point on, core.ignorecase won't change anymore and the repository will
be filled:

I don't think Hannes's point was _when_ you changed it; it was that
you changed it _at all_.

Git on Windows is not designed to run with anything other than
core.ignoreCase=true, and attempting to do so will cause unexpected
behavior. In other words, it's not a behavior toggle so user's can
request the functionality to work one way or the other; it's an
implementation detail that `git init` and `git clone` set when a
repository is created purely so they don't have to probe the file
system each time you run a `git` command.

NTFS is case-preserving-but-case-insensitive by default[1]. So long as
that's the case, the only mode for running Git on Windows is
core.ignoreCase=true.

Hopefully this clarifies things!

Thanks, it does. In this case, I'd suggest to make this clear in the documentation, too. I've just sent a patch.

-Marc



[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