hgext/rebase.py
changeset 29472 f585ce6878e3
parent 29404 591a8069b60e
child 29473 e25da98052a4
equal deleted inserted replaced
29471:c4fc33c477da 29472:f585ce6878e3
   225         self.keepf = keep
   225         self.keepf = keep
   226         self.keepbranchesf = keepbranches
   226         self.keepbranchesf = keepbranches
   227         self.external = external
   227         self.external = external
   228         self.activebookmark = activebookmark
   228         self.activebookmark = activebookmark
   229 
   229 
       
   230     def _prepareabortorcontinue(self, isabort):
       
   231         try:
       
   232             self.restorestatus()
       
   233             self.collapsemsg = restorecollapsemsg(self.repo)
       
   234         except error.RepoLookupError:
       
   235             if isabort:
       
   236                 clearstatus(self.repo)
       
   237                 clearcollapsemsg(self.repo)
       
   238                 self.repo.ui.warn(_('rebase aborted (no revision is removed,'
       
   239                                     ' only broken state is cleared)\n'))
       
   240                 return 0
       
   241             else:
       
   242                 msg = _('cannot continue inconsistent rebase')
       
   243                 hint = _('use "hg rebase --abort" to clear broken state')
       
   244                 raise error.Abort(msg, hint=hint)
       
   245         if isabort:
       
   246             return abort(self.repo, self.originalwd, self.target,
       
   247                          self.state, activebookmark=self.activebookmark)
       
   248 
       
   249         self.obsoletenotrebased = {}
       
   250         if self.ui.configbool('experimental', 'rebaseskipobsolete',
       
   251                               default=True):
       
   252             rebaseobsrevs = set([r for r, st in self.state.items()
       
   253                                     if st == revprecursor])
       
   254             rebasesetrevs = set(self.state.keys())
       
   255             self.obsoletenotrebased = _computeobsoletenotrebased(self.repo,
       
   256                                             rebaseobsrevs, self.target)
       
   257             rebaseobsskipped = set(self.obsoletenotrebased)
       
   258             _checkobsrebase(self.repo, self.ui, rebaseobsrevs, rebasesetrevs,
       
   259                             rebaseobsskipped)
       
   260 
   230 @command('rebase',
   261 @command('rebase',
   231     [('s', 'source', '',
   262     [('s', 'source', '',
   232      _('rebase the specified changeset and descendants'), _('REV')),
   263      _('rebase the specified changeset and descendants'), _('REV')),
   233     ('b', 'base', '',
   264     ('b', 'base', '',
   234      _('rebase everything from branching point of specified changeset'),
   265      _('rebase everything from branching point of specified changeset'),
   379                 raise error.Abort(
   410                 raise error.Abort(
   380                     _('abort and continue do not allow specifying revisions'))
   411                     _('abort and continue do not allow specifying revisions'))
   381             if abortf and opts.get('tool', False):
   412             if abortf and opts.get('tool', False):
   382                 ui.warn(_('tool option will be ignored\n'))
   413                 ui.warn(_('tool option will be ignored\n'))
   383 
   414 
   384             try:
   415             retcode = rbsrt._prepareabortorcontinue(abortf)
   385                 rbsrt.restorestatus()
   416             if retcode is not None:
   386                 rbsrt.collapsemsg = restorecollapsemsg(repo)
   417                 return retcode
   387             except error.RepoLookupError:
       
   388                 if abortf:
       
   389                     clearstatus(repo)
       
   390                     clearcollapsemsg(repo)
       
   391                     repo.ui.warn(_('rebase aborted (no revision is removed,'
       
   392                                    ' only broken state is cleared)\n'))
       
   393                     return 0
       
   394                 else:
       
   395                     msg = _('cannot continue inconsistent rebase')
       
   396                     hint = _('use "hg rebase --abort" to clear broken state')
       
   397                     raise error.Abort(msg, hint=hint)
       
   398             if abortf:
       
   399                 return abort(repo, rbsrt.originalwd, rbsrt.target,
       
   400                              rbsrt.state,
       
   401                              activebookmark=rbsrt.activebookmark)
       
   402 
       
   403             rbsrt.obsoletenotrebased = {}
       
   404             if ui.configbool('experimental', 'rebaseskipobsolete',
       
   405                              default=True):
       
   406                 rebaseobsrevs = set([r for r, st in rbsrt.state.items()
       
   407                                      if st == revprecursor])
       
   408                 rebasesetrevs = set(rbsrt.state.keys())
       
   409                 rbsrt.obsoletenotrebased = _computeobsoletenotrebased(repo,
       
   410                                                 rebaseobsrevs, rbsrt.target)
       
   411                 rebaseobsskipped = set(rbsrt.obsoletenotrebased)
       
   412                 _checkobsrebase(repo, ui, rebaseobsrevs, rebasesetrevs,
       
   413                                 rebaseobsskipped)
       
   414         else:
   418         else:
   415             dest, rebaseset = _definesets(ui, repo, destf, srcf, basef, revf,
   419             dest, rebaseset = _definesets(ui, repo, destf, srcf, basef, revf,
   416                                           destspace=destspace)
   420                                           destspace=destspace)
   417             if dest is None:
   421             if dest is None:
   418                 return _nothingtorebase()
   422                 return _nothingtorebase()