Skip to content
zit zit 0.9.1
Login

zit 0.9.1

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.