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

Bug: Case-insensitive filesystems can cause merge and checkout problems

From
David Turner <dturner@twopensource.com>
Date
Apr 29, 2014, 19:02 UTC
Message-ID
<CAE+yK_m_bPt2pS6MQOrpvVDuLAJf8NFxYOgM8i98tU6-gLcTDw@mail.gmail.com>

By default, git sets core.ignorecase=true when git init or git clone is run on a machine with a case-insensitive filesystem. Here's a test-case for some problems that this causes:

git checkout master touch TestCase git add TestCase git commit -m 'add TestCase' git checkout -b with-camel touch foo git add foo git commit -m 'intervening commit' git checkout master git rm TestCase touch testcase git add testcase git commit -m 'rename to testcase' git checkout with-camel git merge master -m 'merge'

One would expect a clean working copy at this point, but in fact, the file 'testcase' will be deleted.

With core.ignorecase=false, we get a different failure.  The
penultimate command fails with:
$ git checkout with-camel
error: The following untracked working tree files would be overwritten
by checkout:
        TestCase
Please move or remove them before you can switch branches.
Aborting

Of course, there is no untracked working tree file by that name; there is a tracked working tree file named testcase (all-lowercase).

Next: David Turner
Message 1 of 24 in “Bug: Case-insensitive filesystems can cause merge and checkout problems”
  1. David TurnerApr 29, 2014
  2. merge-recursive.c: Fix case-changing merge bugDavid Turner, May 2, 2014
  3. Junio C HamanoMay 6, 2014
  4. David TurnerMay 6, 2014
  5. Junio C HamanoMay 6, 2014
  6. 1/2 merge-recursive.c: Fix case-changing merge.dturner@twopensource.com, May 6, 2014
  7. 2/2 ignorecase: Fix git mv on insensitive filesystemsdturner@twopensource.com, May 6, 2014
  8. Johannes SixtMay 7, 2014
  9. David TurnerMay 7, 2014
  10. Junio C HamanoMay 7, 2014
  11. David TurnerMay 7, 2014
  12. Johannes SixtMay 8, 2014
  13. Torsten BögershausenMay 8, 2014
  14. 0/2 Re: ignorecase: Fix git mv on insensitive filesystemsdturner@twopensource.com, May 8, 2014
  15. 1/2 merge-recursive.c: Fix case-changing merge.dturner@twopensource.com, May 8, 2014
  16. Junio C HamanoMay 8, 2014
  17. 2/2 ignorecase: Fix git mv on insensitive filesystemsdturner@twopensource.com, May 8, 2014
  18. Junio C HamanoMay 8, 2014
  19. David TurnerMay 8, 2014
  20. Junio C HamanoMay 8, 2014
  21. brian m. carlsonMay 8, 2014
  22. Junio C HamanoMay 7, 2014
  23. Jonathan NiederMay 7, 2014
  24. Junio C HamanoMay 7, 2014

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.