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.
--- 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
--- a/tests/test-graft-interrupted.t Wed Nov 20 04:23:45 2024 +0100
+++ b/tests/test-graft-interrupted.t Thu Nov 28 13:22:31 2024 +0100
@@ -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