Re: Moving a directory into another fails

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

thank you, Wolfgang, for back Cc'ing me (Jakub never does that...), but I 
am Cc'ing the git list here, also. Hope both of you don't mind.

On Mon, 4 Dec 2006, Wolfgang Fischer wrote:

> On 04.12.2006, at 20:37, Jakub Narebski wrote:
> 
> > And HFS+ is on MacOS X / Darwin, without iconv in libc...
> 
> And, what is even worse, is the fact that HFS+ uses an encoding, which is not
> represented in libiconv.
> 
> If you CREATE a file, you can use UTF8-NFC 
> (Normalization-Form-Composed), but if you later READDIR a directory, you 
> will get the very same name back in the encoding used by HFS+, which is 
> UTF8-NFD Normalization-Form-Decomposed. The difference is noticeable for 
> some non-ASCII characters like e.g.
> 
> LATIN SMALL LETTER A WITH DIAERESIS  U+00E4 or U+0061 U+0308 in Unicode.
> 
> If you need a sane backward mapping, one has to use some CoreFoundation 
> interface, for which I removed the details out of my brain, in order to 
> reclaim that memory area (garbage collection!). But I can help you with 
> some details and probably code, if you really need that conversion 
> direction.

Yes. When my iBook was still alive, I saw that problem, too: writing and 
reading filenames were completely different issues.

Worse, you can experience the same on USB-Sticks when accessing them with 
different OSes. For example, when checking out a git repo on a stick with 
Linux, and then calling git-status on the same stick with Windows XP, you 
see an issue with the file "Märchen", like you did on MacOSX.

So, please, please, please do not try to be smart about filename encodings 
in git, but just DO NOT USE ANYTHING BUT ASCII IN FILENAMES IF THE 
REPOSITORY IS GOING TO BE PUT ON DIFFERENT OPERATING SYSTEMS/FILE SYSTEMS. 
(Wow, the Caps Lock key is _not_ dead after all. I must have been infected 
by Linus...)

Ciao,
Dscho

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]