Skip to content
zit zit 0.3.43
Login

zit 0.3.43

zit 0.3.43 targets revision -01 of the Fossil drafts, which fold every erratum into the text, and brings its behaviour into line with them where Fossil and the -00 text disagreed. It also closes a weakness in the sync server's handling of authentication.

zit version now reports targets Fossil RFC rev 01. The -01 drafts ship in docs/rfcs/ beside the -00 texts they replace.

No artifact, tag namespace, wire, or on-disk repository format changed. The repository cache's layout version changed, so the first command after upgrading rebuilds derived state once.

Security: cards before a valid login no longer borrow its rights

The sync server used to grant a request's rights once, after verifying its login card, to every card in the request, including cards placed before the login. A captured signed request could be extended with cards ahead of the login card, and those cards ran with the signer's rights. Each card is now judged by the rights in force where it appears, as the draft requires and as Fossil does. Hosts that serve a repository over zit serve should upgrade.

Check-in times follow a date tag

A check-in amended with a date tag is ordered by the tag's value, not by its original D card, as Fossil orders it. The newest date tag wins, a cancelled one restores the original time, and a value that does not parse is ignored. Tips, leaves, tip, plain-name resolution, info, timeline and log --long all follow the retimed check-in. log --long now prints the event time in whole seconds, as info and timeline do, rather than the D card's milliseconds. Dates before 1970 are outside zit's time range, for D cards and date tags alike, as before.

A reply cut short no longer aborts the sync

A sync reply whose body ends inside a file, cfile or uvfile payload used to abort the exchange. pull, push, sync, config and uv now keep everything they processed before the cut, print one warning naming the count, and continue as after any other handler error, exiting 0 as Fossil's do. clone prints the warning, says the clone is incomplete, leaves the directory for you to remove, and exits non-zero, as Fossil's clone fails. The server's answer to a short payload is unchanged: malformed file line.

Artifact format

Repository state

Sync protocol

Compatibility

Qualification

Qualified on macos-aarch64 with the full local battery: format check, ReleaseSafe build, unit tests, e2e, deterministic simulation (seed 1, 1000 steps), all 32 fuzz targets at 100 rounds, and the smoke suite three times against fossil 2.28 [52445a27f1]. Linux targets are qualified when the release is cut.