# HG changeset patch # User FUJIWARA Katsunori # Date 2015-04-10 15:47:09 # Node ID 897a0715ee71a24af14416277aa7c0b28e75e82a # Parent 28d76bc069dbacef47b7ded391c25647703a54a8 subrepo: use vfs.readdir instead of os.listdir to avoid expensive stat calls "kind" information given from "vfs.readdir()" makes expensive stat calls "os.path.isdir()" and "os.path.islink()" useless. diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py --- a/mercurial/subrepo.py +++ b/mercurial/subrepo.py @@ -1632,11 +1632,11 @@ class gitsubrepo(abstractsubrepo): # local-only history self.ui.note(_('removing subrepo %s\n') % self._relpath) self._gitcommand(['config', 'core.bare', 'true']) - for f in os.listdir(self._abspath): + for f, kind in self.wvfs.readdir(): if f == '.git': continue path = os.path.join(self._abspath, f) - if os.path.isdir(path) and not os.path.islink(path): + if kind == stat.S_IFDIR: shutil.rmtree(path) else: os.remove(path)