unionrepo: use a lower level overide in unionrepo too
authorPierre-Yves David <pierre-yves.david@octobus.net>
Fri, 30 Aug 2019 17:45:38 +0200
changeset 42834 64c3db458d08
parent 42833 5ba8c328a895
child 42835 62a39c868b20
unionrepo: use a lower level overide in unionrepo too The unionrepo class also have a strange `baserevision` hack, let's try to get ride of it too.
mercurial/unionrepo.py
--- a/mercurial/unionrepo.py	Fri Aug 30 18:12:16 2019 +0200
+++ b/mercurial/unionrepo.py	Fri Aug 30 17:45:38 2019 +0200
@@ -14,7 +14,6 @@
 from __future__ import absolute_import
 
 from .i18n import _
-from .node import nullid
 
 from . import (
     changelog,
@@ -94,10 +93,7 @@
 
         return mdiff.textdiff(self.revision(rev1), self.revision(rev2))
 
-    def revision(self, nodeorrev, _df=None, raw=False):
-        """return an uncompressed revision of a given node or revision
-        number.
-        """
+    def _revisiondata(self, nodeorrev, _df=None, raw=False):
         if isinstance(nodeorrev, int):
             rev = nodeorrev
             node = self.node(rev)
@@ -105,16 +101,13 @@
             node = nodeorrev
             rev = self.rev(node)
 
-        if node == nullid:
-            return ""
-
         if rev > self.repotiprev:
-            text = self.revlog2.revision(node)
-            self._revisioncache = (node, rev, text)
+            # work around manifestrevlog NOT being a revlog
+            revlog2 = getattr(self.revlog2, '_revlog', self.revlog2)
+            func = revlog2._revisiondata
         else:
-            text = self.baserevision(rev)
-            # already cached
-        return text
+            func = super(unionrevlog, self)._revisiondata
+        return func(node, _df=_df, raw=raw)
 
     def rawdata(self, nodeorrev, _df=None):
         return self.revision(nodeorrev, _df=_df, raw=True)