hgext/states.py
changeset 101 21dbec91e775
parent 100 7d0617e584ff
child 102 5111329280f1
--- 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)