mercurial/unionrepo.py
changeset 47150 8d3c2f9d4af7
parent 47148 a07d5cb03a85
child 47249 130c9f7ed914
equal deleted inserted replaced
47149:396442cd7e6a 47150:8d3c2f9d4af7
    31     vfs as vfsmod,
    31     vfs as vfsmod,
    32 )
    32 )
    33 
    33 
    34 
    34 
    35 class unionrevlog(revlog.revlog):
    35 class unionrevlog(revlog.revlog):
    36     def __init__(self, opener, indexfile, revlog2, linkmapper):
    36     def __init__(self, opener, radix, revlog2, linkmapper):
    37         # How it works:
    37         # How it works:
    38         # To retrieve a revision, we just need to know the node id so we can
    38         # To retrieve a revision, we just need to know the node id so we can
    39         # look it up in revlog2.
    39         # look it up in revlog2.
    40         #
    40         #
    41         # To differentiate a rev in the second revlog from a rev in the revlog,
    41         # To differentiate a rev in the second revlog from a rev in the revlog,
    43         opener = vfsmod.readonlyvfs(opener)
    43         opener = vfsmod.readonlyvfs(opener)
    44         target = getattr(revlog2, 'target', None)
    44         target = getattr(revlog2, 'target', None)
    45         if target is None:
    45         if target is None:
    46             # a revlog wrapper, eg: the manifestlog that is not an actual revlog
    46             # a revlog wrapper, eg: the manifestlog that is not an actual revlog
    47             target = revlog2._revlog.target
    47             target = revlog2._revlog.target
    48         revlog.revlog.__init__(self, opener, target=target, indexfile=indexfile)
    48         revlog.revlog.__init__(self, opener, target=target, radix=radix)
    49         self.revlog2 = revlog2
    49         self.revlog2 = revlog2
    50 
    50 
    51         n = len(self)
    51         n = len(self)
    52         self.repotiprev = n - 1
    52         self.repotiprev = n - 1
    53         self.bundlerevs = set()  # used by 'bundle()' revset expression
    53         self.bundlerevs = set()  # used by 'bundle()' revset expression
   162 class unionchangelog(unionrevlog, changelog.changelog):
   162 class unionchangelog(unionrevlog, changelog.changelog):
   163     def __init__(self, opener, opener2):
   163     def __init__(self, opener, opener2):
   164         changelog.changelog.__init__(self, opener)
   164         changelog.changelog.__init__(self, opener)
   165         linkmapper = None
   165         linkmapper = None
   166         changelog2 = changelog.changelog(opener2)
   166         changelog2 = changelog.changelog(opener2)
   167         unionrevlog.__init__(
   167         unionrevlog.__init__(self, opener, self.radix, changelog2, linkmapper)
   168             self, opener, self._indexfile, changelog2, linkmapper
       
   169         )
       
   170 
   168 
   171 
   169 
   172 class unionmanifest(unionrevlog, manifest.manifestrevlog):
   170 class unionmanifest(unionrevlog, manifest.manifestrevlog):
   173     def __init__(self, nodeconstants, opener, opener2, linkmapper):
   171     def __init__(self, nodeconstants, opener, opener2, linkmapper):
   174         manifest.manifestrevlog.__init__(self, nodeconstants, opener)
   172         manifest.manifestrevlog.__init__(self, nodeconstants, opener)
   175         manifest2 = manifest.manifestrevlog(nodeconstants, opener2)
   173         manifest2 = manifest.manifestrevlog(nodeconstants, opener2)
   176         unionrevlog.__init__(
   174         unionrevlog.__init__(
   177             self, opener, self._revlog._indexfile, manifest2, linkmapper
   175             self, opener, self._revlog.radix, manifest2, linkmapper
   178         )
   176         )
   179 
   177 
   180 
   178 
   181 class unionfilelog(filelog.filelog):
   179 class unionfilelog(filelog.filelog):
   182     def __init__(self, opener, path, opener2, linkmapper, repo):
   180     def __init__(self, opener, path, opener2, linkmapper, repo):
   183         filelog.filelog.__init__(self, opener, path)
   181         filelog.filelog.__init__(self, opener, path)
   184         filelog2 = filelog.filelog(opener2, path)
   182         filelog2 = filelog.filelog(opener2, path)
   185         self._revlog = unionrevlog(
   183         self._revlog = unionrevlog(
   186             opener, self._revlog._indexfile, filelog2._revlog, linkmapper
   184             opener, self._revlog.radix, filelog2._revlog, linkmapper
   187         )
   185         )
   188         self._repo = repo
   186         self._repo = repo
   189         self.repotiprev = self._revlog.repotiprev
   187         self.repotiprev = self._revlog.repotiprev
   190         self.revlog2 = self._revlog.revlog2
   188         self.revlog2 = self._revlog.revlog2
   191 
   189