Re: [PATCH v2] Documentation: declare "core.ignorecase" as internal variable
On Sun, Jun 24, 2018 at 12:44:26PM +0200, Marc Strapetz wrote: > The current description of "core.ignoreCase" reads like an option which > is intended to be changed by the user while it's actually expected to > be set by Git on initialization only. This is especially important for > Git for Windows, as noted by Bryan Turner [1]: > > 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. This is a nice explanation, thanaks for that, Some users of Mac OS or SAMBA will see core.ignoreCase=true, and are not supposed to change it. The same explanation (Git for Windows) is alse valid for HFS+ and APFS under Mac OS and VFAT under all OS. (or even an ext4 file system under Linux exported to Mac OS using SAMBA) May be something like this? Git on a case insensitve file system (Windows, Mac OS, VFAT, SAMBA) 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 . > > [1] https://marc.info/?l=git=152972992729761=2 > > Signed-off-by: Marc Strapetz > --- > Documentation/config.txt | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/Documentation/config.txt b/Documentation/config.txt > index ab641bf5a..c25693828 100644 > --- a/Documentation/config.txt > +++ b/Documentation/config.txt > @@ -390,7 +390,7 @@ core.hideDotFiles:: > default mode is 'dotGitOnly'. > > core.ignoreCase:: > - If true, this option enables various workarounds to enable > + Internal variable which enables various workarounds to enable > Git to work better on filesystems that are not case sensitive, > like FAT. For example, if a directory listing finds > "makefile" when Git expects "Makefile", Git will assume > @@ -399,7 +399,7 @@ core.ignoreCase:: > + > The default is false, except linkgit:git-clone[1] or linkgit:git-init[1] > will probe and set core.ignoreCase true if appropriate when the repository > -is created. > +is created. Modifying this value afterwards may result in unexpected > behavior. > > core.precomposeUnicode:: > This option is only used by Mac OS implementation of Git. > -- > 2.17.0.rc0.3.gb1b5a51b2
Re: [PATCH v2] Documentation: declare "core.ignorecase" as internal variable
Hello Bryan, hello Marc, Marc Strapetz writes: > The current description of "core.ignoreCase" reads like an option which > is intended to be changed by the user while it's actually expected to > be set by Git on initialization only. This is especially important for > Git for Windows, as noted by Bryan Turner [1]: Does this apply to Mac OS X as well? I helped someone recently who had trouble with renamed files (case change only) in a repository residing on a case-insensitive HFS+ file system. Setting core.ignoreCase explicitly (apparently it didn't get set automatically during clone for some reason) helped; the files are recognised correctly now and the case-only rename could be pulled. Is the post-clone change insufficient on Mac OS X? Do we need to replace the existing repository and clone again using '--config core.ignoreCase=true' to avoid future issues? PS: Including the message-id of the mail being referenced would be useful; the id in the URL you gave is specific to the service being used (public-inbox.org) and cannot be used to reference the mail in any other archive (local or public). If you use the mid: syntax (RFC 1630) some MUAs can even recognise the link and open the mail directly. Sascha -- Softwareentwicklung Sascha Silbe, Niederhofenstraße 5/1, 71229 Leonberg https://se-silbe.de/ USt-IdNr.: DE281696641
[PATCH v2] Documentation: declare "core.ignorecase" as internal variable
The current description of "core.ignoreCase" reads like an option which is intended to be changed by the user while it's actually expected to be set by Git on initialization only. This is especially important for Git for Windows, as noted by Bryan Turner [1]: 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. [1] https://marc.info/?l=git=152972992729761=2 Signed-off-by: Marc Strapetz --- Documentation/config.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/config.txt b/Documentation/config.txt index ab641bf5a..c25693828 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -390,7 +390,7 @@ core.hideDotFiles:: default mode is 'dotGitOnly'. core.ignoreCase:: - If true, this option enables various workarounds to enable + Internal variable which enables various workarounds to enable Git to work better on filesystems that are not case sensitive, like FAT. For example, if a directory listing finds "makefile" when Git expects "Makefile", Git will assume @@ -399,7 +399,7 @@ core.ignoreCase:: + The default is false, except linkgit:git-clone[1] or linkgit:git-init[1] will probe and set core.ignoreCase true if appropriate when the repository -is created. +is created. Modifying this value afterwards may result in unexpected behavior. core.precomposeUnicode:: This option is only used by Mac OS implementation of Git. -- 2.17.0.rc0.3.gb1b5a51b2