unionrepo: take delta base in account with building unified revlog
When general delta is enabled, the base is actually meaningful and should be
used. With general delta is enabled, test-unionrepo.t crash without this fix.
--- a/mercurial/unionrepo.py Wed Sep 09 22:27:48 2015 -0400
+++ b/mercurial/unionrepo.py Thu Sep 10 16:14:39 2015 -0700
@@ -49,7 +49,7 @@
for rev2 in self.revlog2:
rev = self.revlog2.index[rev2]
# rev numbers - in revlog2, very different from self.rev
- _start, _csize, _rsize, _base, linkrev, p1rev, p2rev, node = rev
+ _start, _csize, _rsize, base, linkrev, p1rev, p2rev, node = rev
if linkmapper is None: # link is to same revlog
assert linkrev == rev2 # we never link back
@@ -57,6 +57,9 @@
else: # rev must be mapped from repo2 cl to unified cl by linkmapper
link = linkmapper(linkrev)
+ if linkmapper is not None: # link is to same revlog
+ base = linkmapper(base)
+
if node in self.nodemap:
# this happens for the common revlog revisions
self.bundlerevs.add(self.nodemap[node])
@@ -65,7 +68,7 @@
p1node = self.revlog2.node(p1rev)
p2node = self.revlog2.node(p2rev)
- e = (None, None, None, None,
+ e = (None, None, None, base,
link, self.rev(p1node), self.rev(p2node), node)
self.index.insert(-1, e)
self.nodemap[node] = n