Mercurial > public > mercurial-scm > hg-stable
diff mercurial/posix.py @ 23597:7a5bcd471f2e stable
darwin: omit ignorable codepoints when normcase()ing a file path
This lets us avoid some nasty case collision problems in OS X with
invisible codepoints.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Tue, 16 Dec 2014 13:07:10 -0500 |
parents | 77c121da6143 |
children | 5edb387158a1 |
line wrap: on
line diff
--- a/mercurial/posix.py Tue Dec 16 13:06:41 2014 -0500 +++ b/mercurial/posix.py Tue Dec 16 13:07:10 2014 -0500 @@ -208,6 +208,7 @@ - escape-encode invalid characters - decompose to NFD - lowercase + - omit ignored characters [200c-200f, 202a-202e, 206a-206f,feff] >>> normcase('UPPER') 'upper' @@ -265,7 +266,9 @@ u = s.decode('utf-8') # Decompose then lowercase (HFS+ technote specifies lower) - return unicodedata.normalize('NFD', u).lower().encode('utf-8') + enc = unicodedata.normalize('NFD', u).lower().encode('utf-8') + # drop HFS+ ignored characters + return encoding.hfsignoreclean(enc) if sys.platform == 'cygwin': # workaround for cygwin, in which mount point part of path is