Skip to content
zit Artifact [bb93b3cbc3]
Login

Artifact [bb93b3cbc3]

Artifact bb93b3cbc3d466c17b75cf4df3ad16141e911357a4ef3a8087e9c119328b97c8:


zit 0.5.0

zit 0.5.0 lets a repository imported from Git be kept current: zit import-git SOURCE DEST --into adds the upstream commits DEST does not yet hold to the ones it has, so a Git upstream can be followed the way a Fossil one is followed with pull. The release also brings the leaf table into line with Fossil's, ships the Fossil drafts as one file per draft with the errata folded in as history, and records six more errata found against Fossil 2.28.

No artifact, tag namespace, wire, or on-disk repository format changed. A Git import now publishes one more file in its destination, .zit-import-map (see below).

import-git --into

zit import-git SOURCE DEST --into reads which upstream commits DEST already holds, exports only the rest, and writes their check-ins on top of the existing ones. The check-ins written are the ones a full import would write, so a repository kept current this way has the same check-in names as one imported in a single pass at the same sub-manifest k. Check-ins already in DEST are never changed: they keep the branch they were given, and the branch rule is applied to the new commits only. Tags and heads are reconciled by name against what the source publishes: a head that moved away from its old tip is reported and the check-ins it left behind stay; a head or tag deleted upstream loses its name and nothing else.

A fresh import now writes the commit map that makes this possible, .zit-import-map in DEST: the source's identity, the settings the import ran under, every commit's check-in and branch label, and every ref's tip. It is a reserved name at the checkout root, like .zit-checkout, and losing it costs a full re-import. The sub-manifest k, --attribution, --refuse-signed and --default-branch of the first import are reused; a flag that contradicts them is refused rather than applied.

The import is transactional: it appends to DEST's store under the writer lock, and any failure before the map is written truncates the store back to its previous length, so DEST is left as it was. It refuses a destination with no map, one imported from a different repository, one committed to with zit since its import, and one whose first import met a Fossil mirror's own metadata. A tag on a commit DEST already holds is imported as its name alone; a tag's message is not carried. --provenance applies to a fresh import only.

Leaf table

The leaf table is now kept as Fossil keeps it: a check-in is rechecked only when a branch tag is applied to it or propagated to it, never merely because it was crosslinked or linked to a parent. A hand-built history whose check-ins carry no branch tag therefore shows no leaves, as it does in Fossil; every check-in zit or Fossil writes carries one. ckout is no longer a name on its own: it is a keyword only for the ci+ request form, and current names the checkout everywhere else.

Drafts

The Fossil drafts ship as one file per draft, docs/rfcs/draft-fossil-*-00.txt, each carrying its current revision inside the text and its errata as check-in history: one check-in per erratum, so zit log on a draft shows exactly what each erratum changed. The separate -01 files are gone. Every erratum under docs/rfcs/erratum/ is applied to its draft and listed in that draft's change appendix. Six were recorded since 0.4.0, each from reading and running Fossil 2.28:

zit's behaviour changed for the §7.3 and §8.3 errata (see above); the others record what Fossil does where the draft was silent or wrong. The citation re-keying tool scripts/rekey-citations.py moves §X.Y Lnnn citations in the sources across a re-rendered draft; all 958 citations resolve.

Compatibility

Qualification

Qualified natively on macos-aarch64, linux-x86_64 and linux-aarch64 from the release tarball with Zig 0.17.0 and the full battery: format check, --release=fast build, unit tests, e2e, deterministic simulation (seed 1, 1000 steps), all 32 fuzz targets at 100 rounds, and the smoke suite against fossil 2.28 52445a27f1.