236 n, node = self.recover(repo) |
236 n, node = self.recover(repo) |
237 self.ui.status(_('%s transplanted as %s\n') % (revlog.short(node), |
237 self.ui.status(_('%s transplanted as %s\n') % (revlog.short(node), |
238 revlog.short(n))) |
238 revlog.short(n))) |
239 seriespath = os.path.join(self.path, 'series') |
239 seriespath = os.path.join(self.path, 'series') |
240 if not os.path.exists(seriespath): |
240 if not os.path.exists(seriespath): |
|
241 self.transplants.write() |
241 return |
242 return |
242 nodes, merges = self.readseries() |
243 nodes, merges = self.readseries() |
243 revmap = {} |
244 revmap = {} |
244 for n in nodes: |
245 for n in nodes: |
245 revmap[source.changelog.rev(n)] = n |
246 revmap[source.changelog.rev(n)] = n |
253 merge = len(parents) == 2 |
254 merge = len(parents) == 2 |
254 |
255 |
255 if not user or not date or not message or not parents[0]: |
256 if not user or not date or not message or not parents[0]: |
256 raise util.Abort(_('transplant log file is corrupt')) |
257 raise util.Abort(_('transplant log file is corrupt')) |
257 |
258 |
|
259 extra = {'transplant_source': node} |
258 wlock = repo.wlock() |
260 wlock = repo.wlock() |
259 p1, p2 = repo.dirstate.parents() |
261 p1, p2 = repo.dirstate.parents() |
260 if p1 != parents[0]: |
262 if p1 != parents[0]: |
261 raise util.Abort(_('working dir not at transplant parent %s') % |
263 raise util.Abort(_('working dir not at transplant parent %s') % |
262 revlog.hex(parents[0])) |
264 revlog.hex(parents[0])) |
263 if merge: |
265 if merge: |
264 repo.dirstate.setparents(p1, parents[1]) |
266 repo.dirstate.setparents(p1, parents[1]) |
265 n = repo.commit(None, message, user, date, wlock=wlock) |
267 n = repo.commit(None, message, user, date, wlock=wlock, extra=extra) |
266 if not n: |
268 if not n: |
267 raise util.Abort(_('commit failed')) |
269 raise util.Abort(_('commit failed')) |
268 if not merge: |
270 if not merge: |
269 self.transplants.set(n, node) |
271 self.transplants.set(n, node) |
270 self.unlog() |
272 self.unlog() |