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