Skip to content
zit Artifact [67d82045d4]
Login

Artifact [67d82045d4]

Artifact 67d82045d4f9c29afd0076c4e7186ed18a9717a87098daa164a343c57a628bbd:


zit 0.6.4

zit 0.6.4 fixes Git imports of repositories that track files whose contents are check-in manifests, and lets a cone clone read a sparse store whose server leaves out sub-manifest nodes outside the cone.

This release is from trunk. Horizon clones and their protocol extensions are not included.

Imports of files that are check-in manifests

import-git failed with import failed: Corrupt when a tracked Git file held a check-in manifest whose S cards name sub-manifests the repository never held, as a test fixture of real zit manifests does. The importer stores such a file verbatim, and it becomes a check-in of the repository; packing then treated its unresolvable S cards as a damaged store and aborted. Packing now takes an S card naming a sub-manifest the store does not hold as a valid absence, as it already did for an absent file blob: that subtree offers no delta hints and the chronological window decides. A sub-manifest that is present but does not parse still aborts the pack. Flat and sub-manifest imports are both affected and both fixed.

Cone clones of sparse stores

A conforming sparse-cone server descends only the sub-manifest nodes whose key range can reach the requested cone, so a store it serves may lack the nodes outside it. zit clone --cone refused such a store, counting every absent node as a hole. An absent node is now elided when no S card that names it bounds a key range reaching the cone, exclusions included; a node straddling the cone's boundary is still a hole and is still refused.

Two known limits: zit ls of the whole check-in refuses rather than fetching the missing nodes, and a pull can spend a round or two asking for out-of-cone nodes it cannot yet classify.

Sparse-cone draft

The sparse-cone draft now states that a dense pull inventory can cost the out-of-cone blobs of check-ins it announces alongside, and that a filtering server avoids that cost. The change is listed in the draft's Changes in This Revision appendix.

Compatibility

The artifact and repository store formats are unchanged, and so is the wire protocol. Stores written by 0.6.3 are read unchanged.

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.