threads / discuss / 7587

gitweb/test/Märchen has an identity crisis

Subject: gitweb/test/Märchen has an identity crisis

## tl;dr

2 messages between Apr 9, 2007 and Apr 9, 2007.

replies: 1people: 2as markdown or json

Geert Bosch· Apr 9, 2007, 19:13 UTC · lore

In the git repository, after git checkout -f: potomac:~/git%git status # On branch master # Untracked files: # (use "git add <file>..." to include in what will be committed) ... # gitweb/test/Märchen

potomac:~/git%rm gitweb/test/Ma\314\210rchen potomac:~/git%git status # On branch master # Changed but not updated: # (use "git add/rm <file>..." to update what will be committed) # # deleted: gitweb/test/Märchen

Aaaarghh!! There seems something inconsistent in the encoding of the ä letter that confuses git on my Mac OS X system. My environment has LANG=en_US.UTF-8 set, in case that matters.

Filename completion results in Ma\314\210rchen, but the index
encodes it as M\303\244rchen:
0107272   g   i   t   w   e   b   /   t   e   s   t   /   M   ?   ?   r
         147 151 164 167 145 142 057 164 145 163 164 057 115 303 244 162

The filesystem seems to be fine with either: potomac:~/git%ls -l gitweb/test/Ma\314\210rchen gitweb/test/M\303 \244rchen -rw-r--r-- 1 bosch staff 17 2007-04-09 14:51 gitweb/test/Märchen -rw-r--r-- 1 bosch staff 17 2007-04-09 14:51 gitweb/test/Märchen

Anybody has insights in what causes this? Thanks in advance!
   -Geert
Shawn O. Pearce· Apr 9, 2007, 19:18 UTC · re: Geert Bosch · lore

Re: gitweb/test/Märchen has an identity crisis

Geert Bosch <bosch@adacore.com> wrote:
Show 9 quoted lines
> # On branch master
> # Changed but not updated:
> #   (use "git add/rm <file>..." to update what will be committed)
> #
> #       deleted:    gitweb/test/Märchen
> 
> Aaaarghh!! There seems something inconsistent in the encoding
> of the ä letter that confuses git on my Mac OS X system.
> My environment has LANG=en_US.UTF-8 set, in case that matters.

This has been discussed on the list in the past. Mac OS X does a bad thing here; it is normalizating the UTF-8 encoding in a different way than Git supplied the encoding. This is apparently done to support its other bad feature, case insensitive filesystems. ;-)

Basically what Git gave Mac OS X during an open() syscall is not what it gets back during a readdir() because the filesystem changed the byte sequence on us. Yea, not cute.

I think I stuck the byte sequence Mac OS X is supplying into my .git/info/exclude and the problem went away...

-- 
Shawn.

← back to recent threads