mercurial/unionrepo.py
changeset 42824 64c3db458d08
parent 42726 64387cd2bf4d
child 42825 62a39c868b20
equal deleted inserted replaced
42823:5ba8c328a895 42824:64c3db458d08
    12 """
    12 """
    13 
    13 
    14 from __future__ import absolute_import
    14 from __future__ import absolute_import
    15 
    15 
    16 from .i18n import _
    16 from .i18n import _
    17 from .node import nullid
       
    18 
    17 
    19 from . import (
    18 from . import (
    20     changelog,
    19     changelog,
    21     cmdutil,
    20     cmdutil,
    22     encoding,
    21     encoding,
    92         elif rev1 <= self.repotiprev and rev2 <= self.repotiprev:
    91         elif rev1 <= self.repotiprev and rev2 <= self.repotiprev:
    93             return self.baserevdiff(rev1, rev2)
    92             return self.baserevdiff(rev1, rev2)
    94 
    93 
    95         return mdiff.textdiff(self.revision(rev1), self.revision(rev2))
    94         return mdiff.textdiff(self.revision(rev1), self.revision(rev2))
    96 
    95 
    97     def revision(self, nodeorrev, _df=None, raw=False):
    96     def _revisiondata(self, nodeorrev, _df=None, raw=False):
    98         """return an uncompressed revision of a given node or revision
       
    99         number.
       
   100         """
       
   101         if isinstance(nodeorrev, int):
    97         if isinstance(nodeorrev, int):
   102             rev = nodeorrev
    98             rev = nodeorrev
   103             node = self.node(rev)
    99             node = self.node(rev)
   104         else:
   100         else:
   105             node = nodeorrev
   101             node = nodeorrev
   106             rev = self.rev(node)
   102             rev = self.rev(node)
   107 
   103 
   108         if node == nullid:
       
   109             return ""
       
   110 
       
   111         if rev > self.repotiprev:
   104         if rev > self.repotiprev:
   112             text = self.revlog2.revision(node)
   105             # work around manifestrevlog NOT being a revlog
   113             self._revisioncache = (node, rev, text)
   106             revlog2 = getattr(self.revlog2, '_revlog', self.revlog2)
   114         else:
   107             func = revlog2._revisiondata
   115             text = self.baserevision(rev)
   108         else:
   116             # already cached
   109             func = super(unionrevlog, self)._revisiondata
   117         return text
   110         return func(node, _df=_df, raw=raw)
   118 
   111 
   119     def rawdata(self, nodeorrev, _df=None):
   112     def rawdata(self, nodeorrev, _df=None):
   120         return self.revision(nodeorrev, _df=_df, raw=True)
   113         return self.revision(nodeorrev, _df=_df, raw=True)
   121 
   114 
   122     def baserevision(self, nodeorrev):
   115     def baserevision(self, nodeorrev):