[PATCH 4 of 9] unionrepo: use a lower level overide in unionrepo too
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Fri Aug 30 16:39:33 UTC 2019
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at octobus.net>
# Date 1567179938 -7200
# Fri Aug 30 17:45:38 2019 +0200
# Node ID b3b9c5961371426a896a47095a5ff8941174520a
# Parent 680d5166e27cd9029c7e1c6f983fb98e677ea10f
# EXP-Topic sidedata-prep
# Available At https://bitbucket.org/octobus/mercurial-devel/
# hg pull https://bitbucket.org/octobus/mercurial-devel/ -r b3b9c5961371
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.
diff --git a/mercurial/unionrepo.py b/mercurial/unionrepo.py
--- a/mercurial/unionrepo.py
+++ b/mercurial/unionrepo.py
@@ -14,7 +14,6 @@ allowing operations like diff and log wi
from __future__ import absolute_import
from .i18n import _
-from .node import nullid
from . import (
changelog,
@@ -94,10 +93,7 @@ class unionrevlog(revlog.revlog):
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 @@ class unionrevlog(revlog.revlog):
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)
More information about the Mercurial-devel
mailing list