shrink-revlog: add "reverse postorder" and "postorder reverse" toposorts.
Based on a patch by Benoit Boissinot, adapted to the pluggable sort
algorithm design. toposort_reversepostorder() is a very good
performer; it's designed to recreate what the revlog would have looked
like if Mercurial had parent deltas now. toposort_postorderreverse()
is unstable and very inconsistent, but perhaps with some work it could
be made better.
adding foo
adding bar
adding baz
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
created new head
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
created new head
% fail with three heads
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
abort: branch 'default' has 3 heads - please merge with an explicit rev
(run 'hg heads .' to see heads)
% close one of the heads
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
% succeed with two open heads
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)