diff -r 0b52283d50bb -r 8faabe8abf66 mercurial/cmd_impls/graft.py --- a/mercurial/cmd_impls/graft.py Wed Nov 20 04:23:45 2024 +0100 +++ b/mercurial/cmd_impls/graft.py Thu Nov 28 13:22:31 2024 +0100 @@ -44,49 +44,28 @@ # list of new nodes created by ongoing graft statedata[b'newnodes'] = [] - cmdutil.resolve_commit_options(ui, opts) + # argument incompatible with followup from an interrupted operation + commit_args = ['edit', 'log', 'user', 'date', 'currentdate', 'currentuser'] + nofollow_args = commit_args + ['rev'] + arg_compatibilities = [ + ('no_commit', commit_args), + ('stop', nofollow_args), + ('abort', nofollow_args), + ] cmdutil.check_at_most_one_arg(opts, 'abort', 'stop', 'continue') + for arg, incompatible in arg_compatibilities: + cmdutil.check_incompatible_arguments(opts, arg, incompatible) + + cmdutil.resolve_commit_options(ui, opts) cont = False - if opts.get('no_commit'): - cmdutil.check_incompatible_arguments( - opts, - 'no_commit', - ['edit', 'currentuser', 'currentdate', 'log'], - ) graftstate = statemod.cmdstate(repo, b'graftstate') if opts.get('stop'): - cmdutil.check_incompatible_arguments( - opts, - 'stop', - [ - 'edit', - 'log', - 'user', - 'date', - 'currentdate', - 'currentuser', - 'rev', - ], - ) return "STOP", graftstate, None elif opts.get('abort'): - cmdutil.check_incompatible_arguments( - opts, - 'abort', - [ - 'edit', - 'log', - 'user', - 'date', - 'currentdate', - 'currentuser', - 'rev', - ], - ) return "ABORT", graftstate, None elif opts.get('continue'): cont = True