hgext/transplant.py
changeset 3758 889f7e74a0d9
parent 3757 faed44bab17b
child 3759 e96f97ca0358
equal deleted inserted replaced
3757:faed44bab17b 3758:889f7e74a0d9
   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()