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
hg init repo
cd repo
i=0; while [ "$i" -lt 213 ]; do echo a >> a; i=`expr $i + 1`; done
hg add a
echo '% wide diffstat'
hg diff --stat
echo '% diffstat width'
COLUMNS=24 hg diff --config ui.interactive=true --stat
hg ci -m adda
cat >> a <<EOF
a
a
a
EOF
echo '% narrow diffstat'
hg diff --stat
hg ci -m appenda
printf '\0' > b
hg add b
echo '% binary diffstat'
hg diff --stat
echo '% binary git diffstat'
hg diff --stat --git