[states] do not activate deactivated state with ``hg states --off <state>`` previously: $ hg init alpha $ cd alpha $ hg states --off draft $ hg states published draft now: $ hg init alpha $ cd alpha $ hg states --off draft $ hg states published
diff --git a/hgext/states.py b/hgext/states.py --- a/hgext/states.py +++ b/hgext/states.py @@ -517,8 +517,13 @@ def cmdstates(ui, repo, *states, **opt): else: ui.write_err(_('no state named %s\n') % state_name) return 1 - if off and st in repo._enabledstates: - repo._enabledstates.remove(st) + if off: + if st in repo._enabledstates: + repo._enabledstates.remove(st) + else: + ui.write_err(_('state %s already deactivated\n') % + state_name) + else: repo._enabledstates.add(st) repo._writeenabledstates() diff --git a/tests/test-states.t b/tests/test-states.t --- a/tests/test-states.t +++ b/tests/test-states.t @@ -35,3 +35,9 @@ $ hg -R ../other states published +do nothing if state already deactivated + $ hg states --off draft + state draft already deactivated + $ hg states + published + ready