Skip to content
zit Update of ”Home”
Login

Update of ”Home”

Overview

Artifact ID: a5fbe1c7d1aaf499ebe2f861895a2117e67eeddd6a5ecf5d17a0c18c430607f3
Page Name:Home
Date: 2026-09-07 15:20:30
Original User: dmestas
Mimetype:text/x-markdown
Parent: f711f33eaa24ae4e206beb36bc071a9f045950d9dd3ea4f03081d7edc28131cc (diff)
Next 503ecff518a1173d00ff44584279e9e061fbd63644fb48fb45ed5f617165d248
Content

zit

Fossil, reimplemented from its specifications, in Zig.

zit is a clean-room implementation of the Fossil version-control formats and sync protocol. The deliverable is a reusable library — a Zig counterpart to libfossil — with the zit command as a thin consumer. Nothing is ported from C: every rule, byte layout, and rejection condition is taken from four Internet-Drafts frozen in this repository, and every test cites the clause it covers.

Download

Download Zit 0.3.8 for macOS ARM64 or Linux x86-64/ARM64, or get the source archive, or read the release notes.

The specifications

The drafts under docs/rfcs are the sole authority. Expected values in tests come from the spec text and its worked examples, never from observing another implementation.

Layer Draft Specifies
delta draft-fossil-delta-format-00 byte-level delta encoding: copy/literal segments, base-64 integers, mod-2³² checksum
artifact draft-fossil-artifact-format-00 card-structured manifests and control artifacts, content addressing (SHA-1 / SHA3-256), checksums
repostate draft-fossil-repo-state-00 branch, tag, and leaf state derived from the append-only artifact set
sync draft-fossil-sync-protocol-00 HTTP replication of the artifact set between repositories

Each layer depends only on the layers before it:

delta -> artifact -> repostate -> sync

That ordering is also the implementation order, and src mirrors it module for module.

Scope

zit implements the version-control substrate: check-in manifests, clusters, and tag/control artifacts are parsed and interpreted. The collaboration artifact types — wiki, ticket, forum, attachment, technote — are carried opaquely: stored, named, and synchronized by hash, never interpreted.

Building

Requires Zig 0.16 or later.

zig build              # produce zig-out/bin/zit
zig build run -- version
zig build test         # unit tests, one cited test per RFC clause

Finding your way