convert: use a priority queue for sorting commits, to make sorting faster
To achieve this, we turn commit sorters into classes so they can
encapsulate state.
This reduces the sorting time from ~30s to ~10s on a 500k-commit
prefix of a repo I tried to convert. (and probably reduces the time
to sort the whole repo from many tens of minutes to minutes, but I
didn't try that again)
The date caching gets removed because priority queue already
caches the key.
import argparse
import zipfile
ap = argparse.ArgumentParser()
ap.add_argument("out", metavar="some.zip", type=str, nargs=1)
args = ap.parse_args()
with zipfile.ZipFile(args.out[0], "w", zipfile.ZIP_STORED) as zf:
zf.writestr(
"greek-tree",
"\n".join(
[
"iota",
"A/mu",
"A/B/lambda",
"A/B/E/alpha",
"A/B/E/beta",
"A/D/gamma",
"A/D/G/pi",
"A/D/G/rho",
"A/D/G/tau",
"A/D/H/chi",
"A/D/H/omega",
"A/D/H/psi",
]
),
)