Smarter states heads. We use the next relevant heads instead of repo one when asking for the head of a disabled state.
diff --git a/states.py b/states.py --- a/states.py +++ b/states.py @@ -78,6 +78,10 @@ class state(object): else: return 'heads' + def enabled(self, ui): + return ui.configbool('states', self.name, False) + + ST2 = state('draft', _NOSHARE | _MUTABLE) ST1 = state('ready', _MUTABLE, next=ST2) ST0 = state('published', next=ST1) @@ -188,9 +192,12 @@ def reposetup(ui, repo): def stateheads(self, state): + # look for a relevant state + while state.trackheads and not state.next.enabled(self.ui): + state = state.next + # last state have no cached head. if state.trackheads: - if self.ui.configbool('states', state.next.name, False): - return self._statesheads[state] + return self._statesheads[state] return self.heads() @util.propertycache