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 |