Mercurial > hg
changeset 15566:7786b7dfbc46
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Wed, 23 Nov 2011 16:35:17 -0600 |
parents | a82b6038ff08 (current diff) 3992c7df85f2 (diff) |
children | 8b84d040d9f9 |
files | tests/test-casecollision-i18n.t |
diffstat | 3 files changed, 9 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/convert/filemap.py Wed Nov 23 02:44:11 2011 +0100 +++ b/hgext/convert/filemap.py Wed Nov 23 16:35:17 2011 -0600 @@ -99,6 +99,8 @@ if newpre == '.': return suf if suf: + if newpre.endswith('/'): + return newpre + suf return newpre + '/' + suf return newpre return name
--- a/mercurial/posix.py Wed Nov 23 02:44:11 2011 +0100 +++ b/mercurial/posix.py Wed Nov 23 16:35:17 2011 -0600 @@ -176,13 +176,15 @@ u = path.decode('utf-8') except UnicodeDecodeError: # percent-encode any characters that don't round-trip - p2 = path.decode('utf-8', 'replace').encode('utf-8') + p2 = path.decode('utf-8', 'ignore').encode('utf-8') s = "" - for a, b in zip(path, p2): - if a != b: - s += "%%%02X" % ord(a) + pos = 0 + for c in path: + if p2[pos:pos + 1] == c: + s += c + pos += 1 else: - s += a + s += "%%%02X" % ord(c) u = s.decode('utf-8') # Decompose then lowercase (HFS+ technote specifies lower)
--- a/tests/test-casecollision-i18n.t Wed Nov 23 02:44:11 2011 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -run only on case-insensitive filesystems, because collision check at -"hg update" is done only on case-insensitive filesystems - - $ "$TESTDIR/hghave" icasefs || exit 80 - -setup repository, and target files - - $ HGENCODING=cp932 - $ export HGENCODING - $ hg init t - $ cd t - $ python << EOF - > names = ["\x83\x41", # cp932(0x83, 0x41='A'), UNICODE(0x30a2) - > "\x83\x5A", # cp932(0x83, 0x5A='Z'), UNICODE(0x30bb) - > "\x83\x61", # cp932(0x83, 0x61='a'), UNICODE(0x30c2) - > "\x83\x7A", # cp932(0x83, 0x7A='z'), UNICODE(0x30db) - > ] - > for num, name in zip(range(len(names)), names): - > # file for getting target filename of "hg add" - > f = file(str(num), 'w'); f.write(name); f.close() - > # target file of "hg add" - > f = file(name, 'w'); f.write(name); f.close() - > EOF - -test filename collison check at "hg add" - - $ hg add --config ui.portablefilenames=abort `cat 0` - $ hg add --config ui.portablefilenames=abort `cat 1` - $ hg add --config ui.portablefilenames=abort `cat 2` - $ hg add --config ui.portablefilenames=abort `cat 3` - $ hg status -a - A \x83A (esc) - A \x83Z (esc) - A \x83a (esc) - A \x83z (esc) - -test filename collision check at "hg update" - - $ hg commit -m 'revision 0' - $ hg update null - 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - $ hg update tip - 4 files updated, 0 files merged, 0 files removed, 0 files unresolved