# HG changeset patch # User Pierre-Yves David <pierre-yves.david@octobus.net> # Date 1732796551 -3600 # Thu Nov 28 13:22:31 2024 +0100 # Node ID 8faabe8abf66c752a30a86d59b115f9a91d33a8b # Parent 0b52283d50bb14942e8a47414dc24845b63e4dae graft: gather arg compatibility code Lets do it all in one place and at the start, this is easier to maintain consistently. We also take this as an opportunity to do this before we resolve commit options, that so user do not get error about "--date" when they actually they specified the "--current-date" argument. diff --git a/mercurial/cmd_impls/graft.py b/mercurial/cmd_impls/graft.py --- a/mercurial/cmd_impls/graft.py +++ b/mercurial/cmd_impls/graft.py @@ -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 diff --git a/tests/test-graft-interrupted.t b/tests/test-graft-interrupted.t --- a/tests/test-graft-interrupted.t +++ b/tests/test-graft-interrupted.t @@ -253,7 +253,7 @@ [10] $ hg graft --stop -U - abort: cannot specify both --stop and --user + abort: cannot specify both --stop and --currentuser [10] $ hg graft --stop --rev 4 abort: cannot specify both --stop and --rev @@ -363,7 +363,7 @@ [10] $ hg graft --abort --currentuser - abort: cannot specify both --abort and --user + abort: cannot specify both --abort and --currentuser [10] $ hg graft --abort --edit