Thread (1 message) 1 message, 1 author, 2016-08-11

Re: Moving a directory into another fails

From: Johannes Schindelin <hidden>
Date: 2016-08-11 19:46:19

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:
quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help