--- a/hgext/states.py Wed Sep 28 12:35:55 2011 +0200
+++ b/hgext/states.py Wed Sep 28 22:04:52 2011 +0200
@@ -1055,9 +1055,16 @@
statesheads.setdefault(state, set([])).add(nd)
for state, heads in repo._statesheads.iteritems():
- if state.trackheads:
- heads = set(heads) - tostrip | statesheads.get(state, set([]))
- repo._statesheads[state] = list(heads)
+ if not state.trackheads:
+ continue
+ heads = set(heads) - tostrip | statesheads.get(state, set([]))
+ # reduce heads (make them really heads)
+ revs = set(map(cl.rev, heads))
+ minrev = min(revs)
+ for rev in cl.ancestors(*revs):
+ if rev >= minrev:
+ revs.discard(rev)
+ repo._statesheads[state] = map(cl.node, revs)
_writestateshead(repo)
return ostrip(ui, repo, node, backup)