diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -1021,12 +1021,7 @@ inmemory = ui.configbool(b'rebase', b'experimental.inmemory') dryrun = opts.get(b'dry_run') confirm = opts.get(b'confirm') - selactions = [k for k in [b'abort', b'stop', b'continue'] if opts.get(k)] - if len(selactions) > 1: - raise error.Abort( - _(b'cannot use --%s with --%s') % tuple(selactions[:2]) - ) - action = selactions[0] if selactions else None + action = cmdutil.check_unique_argument(opts, b'abort', b'stop', b'continue') if dryrun and action: raise error.Abort(_(b'cannot specify both --dry-run and --%s') % action) if confirm and action: diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -261,7 +261,10 @@ def check_unique_argument(opts, *args): - """abort if more than one of the arguments are in opts""" + """abort if more than one of the arguments are in opts + + Returns the unique argument or None if none of them were specified. + """ previous = None for x in args: if opts.get(x): @@ -270,6 +273,7 @@ _(b'cannot specify both --%s and --%s') % (previous, x) ) previous = x + return previous def check_incompatible_arguments(opts, first, *others): diff --git a/tests/test-rebase-obsolete.t b/tests/test-rebase-obsolete.t --- a/tests/test-rebase-obsolete.t +++ b/tests/test-rebase-obsolete.t @@ -2062,7 +2062,7 @@ (use 'hg rebase --continue' or 'hg rebase --abort') [255] $ hg rebase --stop --continue - abort: cannot use --stop with --continue + abort: cannot specify both --stop and --continue [255] Test --stop moves bookmarks of original revisions to new rebased nodes: diff --git a/tests/test-rebase-parameters.t b/tests/test-rebase-parameters.t --- a/tests/test-rebase-parameters.t +++ b/tests/test-rebase-parameters.t @@ -61,7 +61,7 @@ [1] $ hg rebase --continue --abort - abort: cannot use --abort with --continue + abort: cannot specify both --abort and --continue [255] $ hg rebase --continue --collapse