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")