# HG changeset patch # User FUJIWARA Katsunori # Date 2013-04-29 20:00:48 # Node ID 0176d0db46712bdd330bbe9f7db25b2595e99fae # Parent 294e901f102a6216e341b9809f4443458bbbeeb3 icasefs: ignore removed files at building "dirstate._foldmap" up on icasefs Before this patch, all files in dirstate are used to build "_foldmap" up on case insensitive filesystem regardless of their statuses. For example, when dirstate contains both removed file 'a' and added file 'A', "_foldmap" may be updated finally by removed file 'a'. This causes unexpected status information for added file 'A' at "hg status" invocation. This patch ignores removed files at building "_foldmap" up on case insensitive filessytem. This patch doesn't add any test, because this issue is difficult to reproduce intentionally: it depends on iteration order of "dirstate._map". diff --git a/mercurial/dirstate.py b/mercurial/dirstate.py --- a/mercurial/dirstate.py +++ b/mercurial/dirstate.py @@ -59,8 +59,9 @@ class dirstate(object): @propertycache def _foldmap(self): f = {} - for name in self._map: - f[util.normcase(name)] = name + for name, s in self._map.iteritems(): + if s[0] != 'r': + f[util.normcase(name)] = name for name in self._dirs: f[util.normcase(name)] = name f['.'] = '.' # prevents useless util.fspath() invocation