Mercurial > hg
comparison mercurial/bundlerepo.py @ 45814:88d5abec8f61
bundlerepo: don't insert index tuples with full nodes as linkrev
The index format has a documented format and latter changes will start
to enforce the field types. The bundlerepo uses full nodes for the
linkrev field when it should be using revision numbers. Use the link
mapping to resolve them, except in the special case of self-references.
Those are actually indications of a missing linkrev.
Differential Revision: https://phab.mercurial-scm.org/D9160
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Wed, 07 Oct 2020 03:00:01 +0200 |
parents | 698e11f7be6a |
children | 89a2afe31e82 |
comparison
equal
deleted
inserted
replaced
45813:57dc78861196 | 45814:88d5abec8f61 |
---|---|
61 node, p1, p2, cs, deltabase, delta, flags = deltadata | 61 node, p1, p2, cs, deltabase, delta, flags = deltadata |
62 | 62 |
63 size = len(delta) | 63 size = len(delta) |
64 start = cgunpacker.tell() - size | 64 start = cgunpacker.tell() - size |
65 | 65 |
66 link = linkmapper(cs) | |
67 if self.index.has_node(node): | 66 if self.index.has_node(node): |
68 # this can happen if two branches make the same change | 67 # this can happen if two branches make the same change |
69 self.bundlerevs.add(self.index.rev(node)) | 68 self.bundlerevs.add(self.index.rev(node)) |
70 continue | 69 continue |
70 if cs == node: | |
71 linkrev = nullrev | |
72 else: | |
73 linkrev = linkmapper(cs) | |
71 | 74 |
72 for p in (p1, p2): | 75 for p in (p1, p2): |
73 if not self.index.has_node(p): | 76 if not self.index.has_node(p): |
74 raise error.LookupError( | 77 raise error.LookupError( |
75 p, self.indexfile, _(b"unknown parent") | 78 p, self.indexfile, _(b"unknown parent") |
85 e = ( | 88 e = ( |
86 revlog.offset_type(start, flags), | 89 revlog.offset_type(start, flags), |
87 size, | 90 size, |
88 -1, | 91 -1, |
89 baserev, | 92 baserev, |
90 link, | 93 linkrev, |
91 self.rev(p1), | 94 self.rev(p1), |
92 self.rev(p2), | 95 self.rev(p2), |
93 node, | 96 node, |
94 ) | 97 ) |
95 self.index.append(e) | 98 self.index.append(e) |