new stuff to work with cvs provenance and branches
- put changesets in order, create new commitids for them by storing
a temporary commitid in CVSROOT/commitids-{tree}, running 'cvs
show' on it, reading the output hash, then overwrite the hash in
the commitids file with what we just got, then finally write out
all those new commitids to every revision
- add some new hacks for specific files in src/ that have revisions
with missing previous revisions, and some that are obviously part
of changesets with existing commitids but don't have them for some
reason
- sprinkle some BEGIN/COMMIT around heavy sqlite ops for speed, fix
index names so they're actually unique :/
- be more careful about string encoding in sqlite, get everything to
utf-8. data from rlog was coming in as binary, now iso-8859-1,
and needs to be properly converted to utf-8 before going into
sqlite, otherwise later queries trying to match on string data
(which are probably using utf-8 strings) will fail
- work better when re-running like not complaining about cvs-tmp
existing, since this is no longer intended to just run once.
store cheap cksum of file to detect changes to speed up re-scan.