Mercurial > public > mercurial-scm > hg
comparison mercurial/revlog.py @ 14141:bd1cbfe5db5c
bundler: make parsechunk return the base revision of the delta
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Sat, 30 Apr 2011 10:00:41 +0200 |
parents | bc101902a68d |
children | da635d3c5620 |
comparison
equal
deleted
inserted
replaced
14140:82f0412ef7de | 14141:bd1cbfe5db5c |
---|---|
1129 | 1129 |
1130 try: | 1130 try: |
1131 # loop through our set of deltas | 1131 # loop through our set of deltas |
1132 chain = None | 1132 chain = None |
1133 while 1: | 1133 while 1: |
1134 chunkdata = bundle.parsechunk() | 1134 chunkdata = bundle.parsechunk(chain) |
1135 if not chunkdata: | 1135 if not chunkdata: |
1136 break | 1136 break |
1137 node = chunkdata['node'] | 1137 node = chunkdata['node'] |
1138 p1 = chunkdata['p1'] | 1138 p1 = chunkdata['p1'] |
1139 p2 = chunkdata['p2'] | 1139 p2 = chunkdata['p2'] |
1140 cs = chunkdata['cs'] | 1140 cs = chunkdata['cs'] |
1141 delta = chunkdata['data'] | 1141 deltabase = chunkdata['deltabase'] |
1142 delta = chunkdata['delta'] | |
1142 | 1143 |
1143 link = linkmapper(cs) | 1144 link = linkmapper(cs) |
1144 if (node in self.nodemap and | 1145 if (node in self.nodemap and |
1145 (not self.flags(self.rev(node)) & REVIDX_PUNCHED_FLAG)): | 1146 (not self.flags(self.rev(node)) & REVIDX_PUNCHED_FLAG)): |
1146 # this can happen if two branches make the same change | 1147 # this can happen if two branches make the same change |
1166 _('unknown parent')) | 1167 _('unknown parent')) |
1167 else: | 1168 else: |
1168 raise LookupError(p, self.indexfile, | 1169 raise LookupError(p, self.indexfile, |
1169 _('unknown parent')) | 1170 _('unknown parent')) |
1170 | 1171 |
1171 if not chain: | 1172 if deltabase not in self.nodemap: |
1172 # retrieve the parent revision of the delta chain | 1173 raise LookupError(deltabase, self.indexfile, |
1173 chain = p1 | 1174 _('unknown delta base')) |
1174 if not chain in self.nodemap: | 1175 |
1175 raise LookupError(chain, self.indexfile, _('unknown base')) | 1176 baserev = self.rev(deltabase) |
1176 | |
1177 chainrev = self.rev(chain) | |
1178 chain = self._addrevision(node, None, transaction, link, | 1177 chain = self._addrevision(node, None, transaction, link, |
1179 p1, p2, (chainrev, delta), ifh, dfh) | 1178 p1, p2, (baserev, delta), ifh, dfh) |
1180 if not dfh and not self._inline: | 1179 if not dfh and not self._inline: |
1181 # addrevision switched from inline to conventional | 1180 # addrevision switched from inline to conventional |
1182 # reopen the index | 1181 # reopen the index |
1183 ifh.close() | 1182 ifh.close() |
1184 dfh = self.opener(self.datafile, "a") | 1183 dfh = self.opener(self.datafile, "a") |