Patchwork D3046: narrow: move manifestlog overrides to core

login
register
mail settings
Submitter phabricator
Date April 3, 2018, 8:16 p.m.
Message ID <differential-rev-PHID-DREV-7dylcwqbriefd3zpef3g-req@phab.mercurial-scm.org>
Download mbox | patch
Permalink /patch/30210/
State Superseded
Headers show

Comments

phabricator - April 3, 2018, 8:16 p.m.
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

Patch

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())