git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] Fix "inside work tree" detection on case-insensitive filesystems

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jan 1, 2016, 14:58 UTC
Message-ID
<alpine.DEB.2.20.1601011554240.14434@virtualbox>
In-Reply-To
<56829D08.1060107@alum.mit.edu>
Hi Michael,
On Tue, 29 Dec 2015, Michael Haggerty wrote:
Show 16 quoted lines
> On 09/28/2015 06:12 PM, Johannes Schindelin wrote:
> > Git has a config variable to indicate that it is operating on a file
> > system that is case-insensitive: core.ignoreCase. But the
> > `dir_inside_of()` function did not respect that. As a result, if Git's
> > idea of the current working directory disagreed in its upper/lower case
> > with the `GIT_WORK_TREE` variable (e.g. `C:\test` vs `c:\test`) the
> > user would be greeted by the error message
> > 
> > 	fatal: git-am cannot be used without a working tree.
> > 
> > when trying to run a rebase.
> > 
> > This fixes https://github.com/git-for-windows/git/issues/402 (reported by
> > Daniel Harding).
> 
> I was just going through the 2.7 release notes when I saw this patch.
Thanks for your diligence!
Show 6 quoted lines
> My understanding was that many of the case-insensitive filesystems also
> support Unicode. Is the byte-oriented code in this patch adequate? I
> would have thought it necessary to use a Unicode-aware algorithm here,
> that knows:
> 
> * that bytes != characters

I am not sure that we can in general assume that the file name is UTF-8... Or does Git always assume that?

> * how to do a case-insensitive comparison of strings that include
> non-ASCII characters

I was worrying about that, too, but decided to punt on it when I realized that no other case-insensitive code in Git bothers about those characters.

> * (possibly) insensitivity to NFC vs. NFD vs. non-normalized forms

Whoa... I really would like to stay away from that collection of potholes...

> I suppose that such OSs have built-in functions for deciding whether two
> paths are equivalent. Possibly these could be used?

We could, in theory, try to do that, but what about the OSes that do *not* have those functions? We would need our own fallback anyway, so why not guarantee consistency and use our own functions only?

Ciao, Dscho

Previous: Michael HaggertyNext: Michael Haggerty
Message 3 of 4 in “Fix "inside work tree" detection on case-insensitive filesystems”
  1. Fix "inside work tree" detection on case-insensitive filesystemsJohannes Schindelin, Sep 28, 2015
  2. Michael HaggertyDec 29, 2015
  3. Johannes SchindelinJan 1, 2016
  4. Michael HaggertyJan 1, 2016

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.