diff -r 041d976b662a -r fbe9c4dcc8a0 mercurial/commands.py --- a/mercurial/commands.py Sat Jun 10 10:24:33 2017 -0400 +++ b/mercurial/commands.py Fri Jun 09 20:12:39 2017 -0400 @@ -9,6 +9,7 @@ import difflib import errno +import itertools import os import re import sys @@ -768,9 +769,22 @@ bad = True else: reset = True - elif extra or good + bad + skip + reset + extend + bool(command) > 1: + elif extra: raise error.Abort(_('incompatible arguments')) + incompatibles = { + '--bad': bad, + '--command': bool(command), + '--extend': extend, + '--good': good, + '--reset': reset, + '--skip': skip, + } + + for left, right in itertools.combinations(sorted(incompatibles), 2): + if incompatibles[left] and incompatibles[right]: + raise error.Abort(_('%s and %s are incompatible') % (left, right)) + if reset: hbisect.resetstate(repo) return