Skip to content
zit Artifact [64ab8d1448]
Login

Artifact [64ab8d1448]

Artifact 64ab8d1448945a7e5aa387937bcb9c5c6ca8b17421f0ac5ac25442cbaeac54ea:


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 (zit#176)

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#177)

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 (zit#175)

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.