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

Re: [PATCH 1/1] t0001: fix on case-insensitive filesystems

From
MÅMartin Ågren <martin.agren@gmail.com>
Date
Jun 9, 2019, 19:23 UTC
Message-ID
<CAN0heSrQ-AVui0OzpL7WGBzmdU4ignUsFxYqeXDtgR+CsDXbJw@mail.gmail.com>
In-Reply-To
<1dd56d034efb6ff251bdac8d099052175f4777a0.1560005022.git.gitgitgadget@gmail.com>
Hi Dscho,

On Sat, 8 Jun 2019 at 16:45, Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com> wrote:

Show 7 quoted lines
>
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> On a case-insensitive filesystem, such as HFS+ or NTFS, it is possible
> that the idea Bash has of the current directory differs in case from
> what Git thinks it is. That's totally okay, though, and we should not
> expect otherwise.
> +downcase_on_case_insensitive_fs () {
> +       test false = "$(git config --get core.filemode)" || return 0

I think it would be worthwhile to add `--type=bool` to this git-config call. See, e.g., the FILEMODE prereq in t/test-lib.sh. From my understanding, this check would regress if someone did s/false/no/ in builtin/init-db.c, so this check is perhaps not as robust as it could be. (Now, as for *why* someone would do such a change...)

I do wonder if this is the right way to check for a case-insensitive filesystem. According to git-config(1), this variable tells whether "the executable bit of files in the working tree is to be honored". I can see how this property could correlate with the filesystem being case-insensitive, but from git-config(1), I would have expected core.ignoreCase to be queried instead.

You're no doubt a lot more familiar with filesystem case-insensitivity and how it interacts with Git than I am. Any light you could shed on this would be much appreciated.

> +       for f
> +       do
> +               tr A-Z a-z <"$f" >"$f".downcased &&
> +               mv -f "$f".downcased "$f" || return 1
Makes sense. Good error-handling.
> +       done
> +}

Cheers Martin

Previous: Johannes Schindelin via GitGitGadgetNext: Johannes Schindelin
Message 3 of 18 in “Fix a test on NTFS (and probably HFS+)”
  1. 0/1 Fix a test on NTFS (and probably HFS+)Johannes Schindelin via GitGitGadget, Jun 8, 2019
  2. 1/1 t0001: fix on case-insensitive filesystemsJohannes Schindelin via GitGitGadget, Jun 8, 2019
  3. Martin ÅgrenJun 9, 2019
  4. Johannes SchindelinJun 19, 2019
  5. brian m. carlsonJun 9, 2019
  6. Junio C HamanoJun 10, 2019
  7. Johannes SchindelinJun 19, 2019
  8. Ævar Arnfjörð BjarmasonJun 21, 2019
  9. Johannes SchindelinJun 21, 2019
  10. Junio C HamanoJun 21, 2019
  11. Johannes SchindelinJun 24, 2019
  12. Junio C HamanoJun 24, 2019
  13. Johannes SchindelinJun 24, 2019
  14. Junio C HamanoJun 24, 2019
  15. Johannes SchindelinJun 24, 2019
  16. Junio C HamanoJun 24, 2019
  17. vger vs GitGitGadget, was Re: [PATCH v3 1/1] t0001: fix on case-insensitive filesystemsJohannes Schindelin, Jun 25, 2019
  18. Junio C HamanoJun 25, 2019

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.