comparison hgext/rebase.py @ 29472:f585ce6878e3

rebase: move abort/continue prep to be a method of the RR class This commit moves logic that prepares the execution of abort and continue phases or rebase operation to be a method of the rebaseruntime class.
author Kostia Balytskyi <ikostia@fb.com>
date Fri, 01 Jul 2016 14:09:53 +0200
parents 591a8069b60e
children e25da98052a4
comparison
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()