Today I discovered a bug for Git on Mac OS X.
For example, I will commit a file with the name überschrift.txt with the German special character Ü at the beginning. From the command git status
I get following output.
Users-iMac: user$ git status On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) # # "U\314\210berschrift.txt" nothing added to commit but untracked files present (use "git add" to track)
It seems that Git 1.7.2 has a problem with German special characters on Mac OS X. Is there a solution to get Git read the file names correct?
Enable core.precomposeunicode on the mac
git config --global core.precomposeunicode true
For this to work, you need to have at least Git 1.8.2.
Mountain Lion ships with 1.7.5. To get a newer git either use git-osx-installer or homebrew (requires Xcode).
That's it.
The cause is the different implementation of how the filesystem stores the file name.
In Unicode, Ü can be represented in two ways, one is by Ü alone, the other is by U + "combining umlaut character". A Unicode string can contain both forms, but as it's confusing to have both, the file system normalizes the unicode string by setting every umlauted-U to Ü, or U + "combining umlaut character".
Linux uses the former method, called Normal-Form-Composed (or NFC), and Mac OS X uses the latter method, called Normal-Form-Decomposed (NFD).
Apparently Git doesn't care about this point and simply uses the byte sequence of the filename, which leads to the problem you're having.
The mailing list thread Git, Mac OS X and German special characters has a patch in it so that Git compares the file names after normalization.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With