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.
#!/bin/sh
rm -rf a
hg init a
cd a
echo foo > foo
hg ci -qAm0
chmod +x foo
hg ci -m1
hg co -q 0
echo dirty > foo
hg up -c
hg up -q
cat foo
hg st -A
echo '% validate update of standalone execute bit change'
hg up -C 0
chmod -x foo
hg ci -m removeexec
hg up -C 0
hg up
hg st