zit 0.9.1 fixes two log defects that 0.9.0 shipped with, makes a failed
clone clean up after itself, and documents one exit code.
This release is from trunk. Stores, caches and the wire are unchanged from 0.9.0.
log -F json after a purge
In 0.9.0, log CHECKIN PATH -F json exited 1 with "repository is corrupt"
when one of PATH's versions had been removed with purge artifacts, while
the text form worked. Now such a version is listed with "size": null and
a "content" field naming why it is absent: purged, shunned or
elided (outside a cone or horizon). The command exits 0. Content missing
for no recorded reason still fails, as damage. Other rows are unchanged and
schema_version stays 1.
log for a path that never existed
0.9.0's rename following made log PATH for a name no check-in ever held
read every check-in's file list in the history, looking for where a renamed
file might have lived. On a large store that took minutes. log now
answers from the file index when no check-in changed the name and no rename
leads onto it, as 0.8.1 did.
A failed clone cleans up
A clone that fails before its store is written, for example because the
peer is unreachable, now removes what it made: the directory, when the
clone created it, or else only the .zit and .zit- entries it added. A
clone that fails after its store is written keeps it, as before. When the
directory could not be read beforehand, nothing is removed.
Exit codes
zit help exit-codes lists commit's exit 3: with --stdin, the bytes
were unchanged, and the parent is printed.
Qualification
The release manifest records native qualification against the exact tagged source archive on macOS ARM64, Linux x86-64 and Linux ARM64, using the pinned Zig 0.17.0 toolchain. Publication is gated on unit and end-to-end tests, Git differentials, deterministic simulation, seeded fuzzing, and Fossil interoperability checks on every distributed target.
For the basis of the conformance claim, see the 0.1.0 release notes.