Mercurial > public > mercurial-scm > hg-stable
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 |