Skip to content
zit zit 0.3.8
Login

zit 0.3.8

zit 0.3.8 gives annotate a real diff core, lets info answer many check-ins in one call, and closes the last corners where fossil and zit could read the same checkout differently.

No artifact, tag namespace, or sync message changed.

annotate on a diff core

annotate compared versions with an O(n×m) LCS and re-derived a manifest at every step of the walk. The crosslink record now carries each changed file's artifact hash — fossil's mlink shape — so annotate reads blobs by hash, and merge3 moves to a linear-space Myers LCS. Plaintext and baselines are cached across versions. On the sqlite corpus annotate src/shell.c.in went from 57 s to 3.1 s; fossil takes 2.3 s at its default version limit and 4.4 s with --limit none.

Output is byte-identical to the previous build. Attribution still differs from fossil's on merged lines, by design: zit credits a line to the oldest check-in that carries it and merged lines to their origin branch, where fossil credits along primary parents. Help now states the 12-character prefix annotate actually prints.

info takes many names

zit info A B C answers every name in one process, and - reads the names from stdin. -F json emits one object per line. A name that fails to resolve goes to stderr and the run continues, exiting 1 at the end. A forge rendering a page from hundreds of info calls does one spawn instead of hundreds.

One checkout, two tools, the last corners

Behaviour changes

Compatibility

Qualification

zig build test, e2e, smoke (Fossil interop against a real fossil, now with the add --force scenario), muscle (41 differential steps), git-import-e2e, git-export-e2e, and dst, plus the three-runner CI battery (macOS ARM64, Linux x86-64, Linux ARM64). annotate timings were taken on the sqlite corpus with release builds; attribution and changes output were diffed against fossil 2.28.