Mercurial > hg
view tests/test-addremove.t @ 14980:28e98a8b173d stable
i18n: use UTF-8 string to lower filename for case collision check
Some character sets, cp932 (known as Shift-JIS for Japanese) for
example, use 0x41('A') - 0x5A('Z') and 0x61('a') - 0x7A('z') as second
or later character.
In such character set, case collision checking recognizes different
files as CASEFOLDED same file, if filenames are treated as byte
sequence.
win32mbcs extension is not appropriate to handle this problem, because
this problem can occur on other than Windows platform only if
problematic character set is used.
Callers of util.checkcase() use known ASCII filenames as last
component of path, and string.lower() is not applied to directory part
of path. So, util.checkcase() is kept intact, even though it applies
string.lower() to filenames.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Thu, 28 Jul 2011 14:36:07 +0900 |
parents | 8b252e826c68 |
children | e1f05d7a8c7b |
line wrap: on
line source
$ hg init rep $ cd rep $ mkdir dir $ touch foo dir/bar $ hg -v addremove adding dir/bar adding foo $ hg -v commit -m "add 1" dir/bar foo committed changeset 0:6f7f953567a2 $ cd dir/ $ touch ../foo_2 bar_2 con.xml $ hg -v addremove adding dir/bar_2 adding dir/con.xml adding foo_2 warning: filename contains 'con', which is reserved on Windows: 'dir/con.xml' $ hg -v commit -m "add 2" dir/bar_2 dir/con.xml foo_2 committed changeset 1:6bb597da00f1 $ cd .. $ hg init sim $ cd sim $ echo a > a $ echo a >> a $ echo a >> a $ echo c > c $ hg commit -Ama adding a adding c $ mv a b $ rm c $ echo d > d $ hg addremove -n -s 50 # issue 1696 removing a adding b removing c adding d recording removal of a as rename to b (100% similar) $ hg addremove -s 50 removing a adding b removing c adding d recording removal of a as rename to b (100% similar) $ hg commit -mb