treemanifest: attempt to avoid loading all lazily-loaded subdirs in _isempty
Differential Revision: https://phab.mercurial-scm.org/D4367
--- a/mercurial/manifest.py Thu Aug 16 12:31:52 2018 -0700
+++ b/mercurial/manifest.py Thu Aug 23 00:33:06 2018 -0700
@@ -726,9 +726,13 @@
def _isempty(self):
self._load() # for consistency; already loaded by all callers
+ # See if we can skip loading everything.
+ if self._files or (self._dirs and
+ any(not m._isempty() for m in self._dirs.values())):
+ return False
self._loadalllazy()
- return (not self._files and (not self._dirs or
- all(m._isempty() for m in self._dirs.values())))
+ return (not self._dirs or
+ all(m._isempty() for m in self._dirs.values()))
def __repr__(self):
return ('<treemanifest dir=%s, node=%s, loaded=%s, dirty=%s at 0x%x>' %