Add repack.chainorphansbysize (default True).
When enabled, we take all orphaned nodes (nodes that are not part of a chain),
and put them into a new chain at the end, so we can get some minimal
compression out of them. Right now, they default to each being stored as
fulltexts, which is wasteful.
We sort the orphan chain by size, descending, to make the largest version
quickest to access, on the assumption that it is probably the newest. (This is
what Git does for its packed data, and it is a decent fallback if ancestry is
not available)
Example chain output, before:
A->B C D->E->F G H
After:
A->B D->E->F G->C->H (assuming len(G)>=C=>H)
(I'm still adding a test case, but the code itself could be reviewed.)
Missing trailing comma