Mercurial > hg
view tests/test-casecollision.t @ 18626:b114e41c4df3
addremove: don't audit the path for paths already in the dirstate
Now that dirstate.walk returns None for paths under symlink directories,
addremove doesn't need to validate each path it sees to look for files
under symlinks.
On a large repository this brings addremove from 6.3 seconds down to 3.65 (42%)
since addremove no longer has to stat every directory of every file to determine
if the file is inside a symlink directory. I put it through our benchmark and
see no perf hit to any other commands.
author | Durham Goode <durham@fb.com> |
---|---|
date | Tue, 05 Feb 2013 14:36:19 -0800 |
parents | 14e44933d175 |
children | 7a9cbb315d84 |
line wrap: on
line source
run only on case-sensitive filesystems $ "$TESTDIR/hghave" no-icasefs || exit 80 test file addition with colliding case $ hg init repo1 $ cd repo1 $ echo a > a $ echo A > A $ hg add a $ hg st A a ? A $ hg add --config ui.portablefilenames=abort A abort: possible case-folding collision for A [255] $ hg st A a ? A $ hg add A warning: possible case-folding collision for A $ hg st A A A a $ hg forget A $ hg st A a ? A $ hg add --config ui.portablefilenames=no A $ hg st A A A a $ mkdir b $ touch b/c b/D $ hg add b adding b/D adding b/c $ touch b/d b/C $ hg add b/C warning: possible case-folding collision for b/C $ hg add b/d warning: possible case-folding collision for b/d $ touch b/a1 b/a2 $ hg add b adding b/a1 adding b/a2 $ touch b/A2 b/a1.1 $ hg add b/a1.1 b/A2 warning: possible case-folding collision for b/A2 $ touch b/f b/F $ hg add b/f b/F warning: possible case-folding collision for b/f $ touch g G $ hg add g G warning: possible case-folding collision for g $ mkdir h H $ touch h/x H/x $ hg add h/x H/x warning: possible case-folding collision for h/x $ touch h/s H/s $ hg add h/s $ hg add H/s warning: possible case-folding collision for H/s case changing rename must not warn or abort $ echo c > c $ hg ci -qAmx $ hg mv c C $ cd ..