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.

- `clone`, `pull`, `open`, `update` and `status` walk only the cone, and
  `verify` counts elided nodes as deliberately elided.
- Widening a cone with `update` or `open` fetches the nodes it now needs
  from the saved remote.
- Reads of the whole check-in (`ls` of the check-in, `cat` of an
  out-of-cone path, `revert`, `archive`, `merge`) refuse with a message
  naming the sparse cone rather than a baseline error.

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](RELEASE-NOTES-0.1.0.md).