diff --git a/mercurial/unionrepo.py b/mercurial/unionrepo.py --- a/mercurial/unionrepo.py +++ b/mercurial/unionrepo.py @@ -49,7 +49,7 @@ class unionrevlog(revlog.revlog): 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 @@ class unionrevlog(revlog.revlog): 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 @@ class unionrevlog(revlog.revlog): 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