Mercurial > hg
changeset 6822:1e2850ed8171
dirstate: simplify normalize logic
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Tue, 22 Jul 2008 13:03:14 -0500 |
parents | d8367107da05 |
children | 12081ea61a34 |
files | mercurial/dirstate.py |
diffstat | 1 files changed, 25 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/dirstate.py Tue Jul 22 13:03:13 2008 -0500 +++ b/mercurial/dirstate.py Tue Jul 22 13:03:14 2008 -0500 @@ -344,14 +344,11 @@ self._ui.warn(_("not in dirstate: %s\n") % f) def _normalize(self, path): - normpath = os.path.normcase(os.path.normpath(path)) - if normpath in self._foldmap: - return self._foldmap[normpath] - elif os.path.exists(path): - self._foldmap[normpath] = util.fspath(path, self._root) - return self._foldmap[normpath] - else: - return path + if path not in self._foldmap: + if not os.path.exists(path): + return path + self._foldmap[path] = util.fspath(path, self._root) + return self._foldmap[path] def clear(self): self._map = {} @@ -465,6 +462,7 @@ common_prefix_len += 1 normpath = util.normpath + normalize = self.normalize listdir = osutil.listdir lstat = os.lstat bisect_left = bisect.bisect_left @@ -483,10 +481,9 @@ # step one, find all files that match our criteria for ff in util.sort(files): - nf = normpath(ff) - nn = self.normalize(nf) - f = _join(ff) - if nn in seen: + nf = normalize(normpath(ff)) + f = _join(nf) + if nf in seen: continue try: @@ -501,14 +498,14 @@ if inst.errno != errno.ENOENT: fwarn(ff, inst.strerror) elif badfn(ff, inst.strerror) and imatch(nf): - yield ff, None + yield nf, None continue if not s_isdir(st.st_mode): - seen[nn] = 1 + seen[nf] = 1 if supported(ff, st.st_mode, verbose=True): - yield self.normalize(nf), st - elif ff in dmap: + yield nf, st + elif nf in dmap: yield nf, None continue @@ -535,25 +532,24 @@ if isdir(join(top, '.hg')): continue for f, kind, st in entries: - np = pconvert(join(nd, f)) - nn = self.normalize(np) - if np in seen: + nf = normalize(pconvert(join(nd, f))) + if nf in seen: continue - seen[nn] = 1 + seen[nf] = 1 p = join(top, f) # don't trip over symlinks if kind == stat.S_IFDIR: - if not ignore(np): + if not ignore(nf): wadd(p) if hasattr(match, 'dir'): - match.dir(np) - if np in dmap and match(np): - add((nn, None)) - elif imatch(np): - if supported(np, st.st_mode): - add((nn, st)) - elif np in dmap: - add((nn, None)) + match.dir(nf) + if nf in dmap and match(nf): + add((nf, None)) + elif imatch(nf): + if supported(nf, st.st_mode): + add((nf, st)) + elif nf in dmap: + add((nf, None)) for e in util.sort(found): yield e