Fossil keeps a project's downloads as unversioned files: no history, synced
with fossil sync -u, served from the repository. zit's own releases have
been published that way, to a stock Fossil server.
The plan was for zit to do what Fossil does: an unversioned table in every repository, synced alongside the history. Halfway into the design it stopped making sense. quarry, zit's forge, keeps a repository's unversioned files in its own storage and answers Fossil's protocol for them itself. A copy in every zit repository would be a second home for the same bytes, and a store format change that older zit could not open, for nothing quarry needs.
So 0.3.36 has the client half and no store:
zit uv list URL [-l]
zit uv pull URL NAME... [-o DIR]
zit uv push URL FILE... [--as NAME]
zit uv rm URL NAME...
Files move between the server and plain files; nothing is written to the
repository. It speaks Fossil's protocol, so the server can be quarry or a
stock fossil server, and the smoke suite checks it against the latter: what
zit uv push sends is exactly what fossil uv cat serves.
One thing it does differently from Fossil. A Fossil server keeps whichever
copy of a file is newer, and when it keeps its own it says nothing. zit uv
refuses an older push with a message, and reads the catalog back after every
change to confirm the server took it.
The same release adds the main-branch setting. Fossil never syncs it, so a
mirror reports trunk until someone sets it, and now zit can say and set it.