mercurial/commands.py
changeset 32766 fbe9c4dcc8a0
parent 32754 723de0ad3d8b
child 32823 cb48dfd9672d
--- 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