diff --git a/hgext/releasenotes.py b/hgext/releasenotes.py --- a/hgext/releasenotes.py +++ b/hgext/releasenotes.py @@ -20,6 +20,7 @@ from mercurial.i18n import _ from mercurial.pycompat import open from mercurial import ( + cmdutil, config, error, minirst, @@ -653,14 +654,9 @@ opts = pycompat.byteskwargs(opts) sections = releasenotessections(ui, repo) - listflag = opts.get(b'list') + cmdutil.check_incompatible_arguments(opts, b'list', b'rev', b'check') - if listflag and opts.get(b'rev'): - raise error.Abort(_(b'cannot use both \'--list\' and \'--rev\'')) - if listflag and opts.get(b'check'): - raise error.Abort(_(b'cannot use both \'--list\' and \'--check\'')) - - if listflag: + if opts.get(b'list'): return _getadmonitionlist(ui, sections) rev = opts.get(b'rev') diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py --- a/mercurial/cmdutil.py +++ b/mercurial/cmdutil.py @@ -272,6 +272,16 @@ previous = x +def check_incompatible_arguments(opts, first, *others): + """abort if the first argument is given along with any of the others + + Unlike check_at_most_one_arg(), `others` are not mutually exclusive + among themselves. + """ + for other in others: + check_at_most_one_arg(opts, first, other) + + def resolvecommitoptions(ui, opts): """modify commit options dict to handle related options