diff -r 7d0617e584ff -r 21dbec91e775 hgext/states.py --- 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)