mirror of
https://github.com/facebook/sapling.git
synced 2024-10-08 15:57:43 +03:00
histedit: break _histedit function into smaller pieces
We add _getgoal, _validateargs. This is a part of bigger effort to refactor histedit. Initial steps are to break _histedit function into smaller pieces which will supposedly be more understandable. After this is done, I will have a better understanding of how histedit works and apply that to fix issue4800.
This commit is contained in:
parent
c6f4a6c3fa
commit
41ac3675d5
@ -982,7 +982,16 @@ def histedit(ui, repo, *freeargs, **opts):
|
|||||||
finally:
|
finally:
|
||||||
release(state.lock, state.wlock)
|
release(state.lock, state.wlock)
|
||||||
|
|
||||||
def _histedit(ui, repo, state, *freeargs, **opts):
|
def _getgoal(opts):
|
||||||
|
if opts.get('continue'):
|
||||||
|
return 'continue'
|
||||||
|
if opts.get('abort'):
|
||||||
|
return 'abort'
|
||||||
|
if opts.get('edit_plan'):
|
||||||
|
return 'edit-plan'
|
||||||
|
return 'new'
|
||||||
|
|
||||||
|
def _validateargs(ui, repo, state, freeargs, opts, goal, rules, revs):
|
||||||
# TODO only abort if we try to histedit mq patches, not just
|
# TODO only abort if we try to histedit mq patches, not just
|
||||||
# blanket if mq patches are applied somewhere
|
# blanket if mq patches are applied somewhere
|
||||||
mq = getattr(repo, 'mq', None)
|
mq = getattr(repo, 'mq', None)
|
||||||
@ -991,28 +1000,21 @@ def _histedit(ui, repo, state, *freeargs, **opts):
|
|||||||
|
|
||||||
# basic argument incompatibility processing
|
# basic argument incompatibility processing
|
||||||
outg = opts.get('outgoing')
|
outg = opts.get('outgoing')
|
||||||
cont = opts.get('continue')
|
|
||||||
editplan = opts.get('edit_plan')
|
editplan = opts.get('edit_plan')
|
||||||
abort = opts.get('abort')
|
abort = opts.get('abort')
|
||||||
force = opts.get('force')
|
force = opts.get('force')
|
||||||
rules = opts.get('commands', '')
|
|
||||||
revs = opts.get('rev', [])
|
|
||||||
goal = 'new' # This invocation goal, in new, continue, abort
|
|
||||||
if force and not outg:
|
if force and not outg:
|
||||||
raise error.Abort(_('--force only allowed with --outgoing'))
|
raise error.Abort(_('--force only allowed with --outgoing'))
|
||||||
if cont:
|
if goal == 'continue':
|
||||||
if any((outg, abort, revs, freeargs, rules, editplan)):
|
if any((outg, abort, revs, freeargs, rules, editplan)):
|
||||||
raise error.Abort(_('no arguments allowed with --continue'))
|
raise error.Abort(_('no arguments allowed with --continue'))
|
||||||
goal = 'continue'
|
elif goal == 'abort':
|
||||||
elif abort:
|
|
||||||
if any((outg, revs, freeargs, rules, editplan)):
|
if any((outg, revs, freeargs, rules, editplan)):
|
||||||
raise error.Abort(_('no arguments allowed with --abort'))
|
raise error.Abort(_('no arguments allowed with --abort'))
|
||||||
goal = 'abort'
|
elif goal == 'edit-plan':
|
||||||
elif editplan:
|
|
||||||
if any((outg, revs, freeargs)):
|
if any((outg, revs, freeargs)):
|
||||||
raise error.Abort(_('only --commands argument allowed with '
|
raise error.Abort(_('only --commands argument allowed with '
|
||||||
'--edit-plan'))
|
'--edit-plan'))
|
||||||
goal = 'edit-plan'
|
|
||||||
else:
|
else:
|
||||||
if os.path.exists(os.path.join(repo.path, 'histedit-state')):
|
if os.path.exists(os.path.join(repo.path, 'histedit-state')):
|
||||||
raise error.Abort(_('history edit already in progress, try '
|
raise error.Abort(_('history edit already in progress, try '
|
||||||
@ -1034,9 +1036,14 @@ def _histedit(ui, repo, state, *freeargs, **opts):
|
|||||||
raise error.Abort(
|
raise error.Abort(
|
||||||
_('histedit requires exactly one ancestor revision'))
|
_('histedit requires exactly one ancestor revision'))
|
||||||
|
|
||||||
|
def _histedit(ui, repo, state, *freeargs, **opts):
|
||||||
|
goal = _getgoal(opts)
|
||||||
|
revs = opts.get('rev', [])
|
||||||
|
rules = opts.get('commands', '')
|
||||||
state.keep = opts.get('keep', False)
|
state.keep = opts.get('keep', False)
|
||||||
|
|
||||||
|
_validateargs(ui, repo, state, freeargs, opts, goal, rules, revs)
|
||||||
|
|
||||||
# rebuild state
|
# rebuild state
|
||||||
if goal == 'continue':
|
if goal == 'continue':
|
||||||
state.read()
|
state.read()
|
||||||
|
Loading…
Reference in New Issue
Block a user