D3046: narrow: move manifestlog overrides to core
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Tue Apr 3 20:16:38 UTC 2018
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
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())
To: martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list