narrow: remove custom filelog type
authorGregory Szorc <gregory.szorc@gmail.com>
Wed, 05 Sep 2018 12:44:25 -0700
changeset 39766 9358f5066811
parent 39765 3e801ffd7269
child 39767 db088e133e91
narrow: remove custom filelog type This functionality is now handled by core as of the previous commit. I wanted this to be a standalone commit because the deleted code makes a reference to remotefilelog's file type missing a node() method and this may have implications to narrow+remotefilelog usage. The code in core doesn't perform this check and therefore behavior may be subtly different and buggy. But I /think/ the check is merely a performance optimization and nothing more. So I'm optimistic this will continue to "just work." Differential Revision: https://phab.mercurial-scm.org/D4644
hgext/narrow/narrowrepo.py
hgext/narrow/narrowrevlog.py
--- a/hgext/narrow/narrowrepo.py	Thu Sep 13 16:02:22 2018 -0700
+++ b/hgext/narrow/narrowrepo.py	Wed Sep 05 12:44:25 2018 -0700
@@ -9,7 +9,6 @@
 
 from . import (
     narrowdirstate,
-    narrowrevlog,
     narrowwirepeer,
 )
 
@@ -18,11 +17,6 @@
 
     class narrowrepository(repo.__class__):
 
-        def file(self, f):
-            fl = super(narrowrepository, self).file(f)
-            narrowrevlog.makenarrowfilelog(fl, self.narrowmatch())
-            return fl
-
         def _makedirstate(self):
             dirstate = super(narrowrepository, self)._makedirstate()
             return narrowdirstate.wrapdirstate(self, dirstate)
--- a/hgext/narrow/narrowrevlog.py	Thu Sep 13 16:02:22 2018 -0700
+++ b/hgext/narrow/narrowrevlog.py	Wed Sep 05 12:44:25 2018 -0700
@@ -9,7 +9,6 @@
 
 from mercurial import (
    revlog,
-   util,
 )
 
 def readtransform(self, text):
@@ -28,53 +27,3 @@
     # We just wanted to add the flag processor, which is done at module
     # load time.
     pass
-
-def makenarrowfilelog(fl, narrowmatch):
-    class narrowfilelog(fl.__class__):
-        def renamed(self, node):
-            # Renames that come from outside the narrowspec are
-            # problematic at least for git-diffs, because we lack the
-            # base text for the rename. This logic was introduced in
-            # 3cd72b1 of narrowhg (authored by martinvonz, reviewed by
-            # adgar), but that revision doesn't have any additional
-            # commentary on what problems we can encounter.
-            m = super(narrowfilelog, self).renamed(node)
-            if m and not narrowmatch(m[0]):
-                return None
-            return m
-
-        def size(self, rev):
-            # We take advantage of the fact that remotefilelog
-            # lacks a node() method to just skip the
-            # rename-checking logic when on remotefilelog. This
-            # might be incorrect on other non-revlog-based storage
-            # engines, but for now this seems to be fine.
-            #
-            # TODO: when remotefilelog is in core, improve this to
-            # explicitly look for remotefilelog instead of cheating
-            # with a hasattr check.
-            if util.safehasattr(self, 'node'):
-                node = self.node(rev)
-                # Because renamed() is overridden above to
-                # sometimes return None even if there is metadata
-                # in the revlog, size can be incorrect for
-                # copies/renames, so we need to make sure we call
-                # the super class's implementation of renamed()
-                # for the purpose of size calculation.
-                if super(narrowfilelog, self).renamed(node):
-                    return len(self.read(node))
-            return super(narrowfilelog, self).size(rev)
-
-        def cmp(self, node, text):
-            different = super(narrowfilelog, self).cmp(node, text)
-            if different:
-                # Similar to size() above, if the file was copied from
-                # a file outside the narrowspec, the super class's
-                # would have returned True because we tricked it into
-                # thinking that the file was not renamed.
-                if super(narrowfilelog, self).renamed(node):
-                    t2 = self.read(node)
-                    return t2 != text
-            return different
-
-    fl.__class__ = narrowfilelog