From patchwork Tue Apr 3 20:16:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D3046: narrow: move manifestlog overrides to core From: phabricator X-Patchwork-Id: 30210 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Tue, 3 Apr 2018 20:16:38 +0000 martinvonz created this revision. Herald added a reviewer: durin42. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY With this and the previous patch, I couldn't measure any significant difference from `hg files -r .` in a FireFox repo with 65k files. I tried with both a flat-manifest and a tree-manifest version of it. Neither had the narrow extension enabled. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D3046 AFFECTED FILES hgext/narrow/narrowrepo.py hgext/narrow/narrowrevlog.py mercurial/manifest.py CHANGE DETAILS To: martinvonz, durin42, #hg-reviewers Cc: mercurial-devel diff --git a/mercurial/manifest.py b/mercurial/manifest.py --- a/mercurial/manifest.py +++ b/mercurial/manifest.py @@ -1303,6 +1303,9 @@ if node in self._dirmancache.get(dir, ()): return self._dirmancache[dir][node] + if not self._narrowmatch.always(): + if not self._narrowmatch.visitdir(dir[:-1] or '.'): + return excludeddirmanifestctx(dir, node) if dir: if self._revlog._treeondisk: if verify: diff --git a/hgext/narrow/narrowrevlog.py b/hgext/narrow/narrowrevlog.py --- a/hgext/narrow/narrowrevlog.py +++ b/hgext/narrow/narrowrevlog.py @@ -8,7 +8,6 @@ from __future__ import absolute_import from mercurial import ( - manifest, revlog, util, ) @@ -30,14 +29,6 @@ # load time. pass -def makenarrowmanifestlog(mfl, repo): - class narrowmanifestlog(mfl.__class__): - def get(self, dir, node, verify=True): - if not repo.narrowmatch().visitdir(dir[:-1] or '.'): - return manifest.excludeddirmanifestctx(dir, node) - return super(narrowmanifestlog, self).get(dir, node, verify=verify) - mfl.__class__ = narrowmanifestlog - def makenarrowfilelog(fl, narrowmatch): class narrowfilelog(fl.__class__): def renamed(self, node): diff --git a/hgext/narrow/narrowrepo.py b/hgext/narrow/narrowrepo.py --- a/hgext/narrow/narrowrepo.py +++ b/hgext/narrow/narrowrepo.py @@ -50,12 +50,6 @@ class narrowrepository(repo.__class__): - @cacheprop('00manifest.i') - def manifestlog(self): - mfl = super(narrowrepository, self).manifestlog - narrowrevlog.makenarrowmanifestlog(mfl, self) - return mfl - def file(self, f): fl = super(narrowrepository, self).file(f) narrowrevlog.makenarrowfilelog(fl, self.narrowmatch())