comparison mercurial/unionrepo.py @ 26230:6b16a3538c20

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.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 10 Sep 2015 16:14:39 -0700
parents 83f220c7d6f0
children 56b2bcea2529
comparison
equal deleted inserted replaced
26229:d1530c6e8613 26230:6b16a3538c20
47 self.repotiprev = n - 1 47 self.repotiprev = n - 1
48 self.bundlerevs = set() # used by 'bundle()' revset expression 48 self.bundlerevs = set() # used by 'bundle()' revset expression
49 for rev2 in self.revlog2: 49 for rev2 in self.revlog2:
50 rev = self.revlog2.index[rev2] 50 rev = self.revlog2.index[rev2]
51 # rev numbers - in revlog2, very different from self.rev 51 # rev numbers - in revlog2, very different from self.rev
52 _start, _csize, _rsize, _base, linkrev, p1rev, p2rev, node = rev 52 _start, _csize, _rsize, base, linkrev, p1rev, p2rev, node = rev
53 53
54 if linkmapper is None: # link is to same revlog 54 if linkmapper is None: # link is to same revlog
55 assert linkrev == rev2 # we never link back 55 assert linkrev == rev2 # we never link back
56 link = n 56 link = n
57 else: # rev must be mapped from repo2 cl to unified cl by linkmapper 57 else: # rev must be mapped from repo2 cl to unified cl by linkmapper
58 link = linkmapper(linkrev) 58 link = linkmapper(linkrev)
59 59
60 if linkmapper is not None: # link is to same revlog
61 base = linkmapper(base)
62
60 if node in self.nodemap: 63 if node in self.nodemap:
61 # this happens for the common revlog revisions 64 # this happens for the common revlog revisions
62 self.bundlerevs.add(self.nodemap[node]) 65 self.bundlerevs.add(self.nodemap[node])
63 continue 66 continue
64 67
65 p1node = self.revlog2.node(p1rev) 68 p1node = self.revlog2.node(p1rev)
66 p2node = self.revlog2.node(p2rev) 69 p2node = self.revlog2.node(p2rev)
67 70
68 e = (None, None, None, None, 71 e = (None, None, None, base,
69 link, self.rev(p1node), self.rev(p2node), node) 72 link, self.rev(p1node), self.rev(p2node), node)
70 self.index.insert(-1, e) 73 self.index.insert(-1, e)
71 self.nodemap[node] = n 74 self.nodemap[node] = n
72 self.bundlerevs.add(n) 75 self.bundlerevs.add(n)
73 n += 1 76 n += 1