# zit
> zit is a Fossil version-control system in Zig: one self-contained binary that reads and writes Fossil's artifact formats and speaks Fossil's sync protocol, so it clones from, pushes to, pulls from and serves stock `fossil`. A repository is a single store file, `.zit`, beside a working tree; there is no staging area and history is immutable. `zit help` lists every verb, `zit VERB --help` documents one, and any unambiguous prefix of a verb works. Exit status is 0 for success, 1 for an operational failure, 2 for a usage error.
## Getting started
- [Download](https://fossil.craftdesign.group/zit/uv/download.html): release binaries for macOS ARM64 and Linux x86-64/ARM64, with checksums and a source archive.
- [Fast clones for CI and agents](https://fossil.craftdesign.group/zit/doc/trunk/docs/fast-clones.md): the fastest way to a working clone: `zit clone URL work --horizon=tip --structural [--cone=PATH]` for the latest work, or `--horizon=HASH` when CI has the hash, then open, build, commit and push.
- [README](https://fossil.craftdesign.group/zit/doc/trunk/README.md): what zit does, what it leaves to Fossil, and how to build it.
## Essential verbs
- `zit clone URL [DIR] [--horizon=HASH|NAME [--depth=N] [--structural]] [--cone=PATH]`: copy a repository into DIR and open its working tree; `--no-open` leaves the bare store.
- `zit open [CHECKIN] [--cone=PATH]`: fill a cloned directory with a check-in's files.
- `zit update [CHECKIN]`: move the working tree to CHECKIN, or to the current branch's newest check-in, carrying local edits.
- `zit status`: the current check-in and each changed tracked file.
- `zit diff [--from A --to B] [PATH...]`: working tree against the current check-in, or two check-ins, as unified hunks.
- `zit commit -m MSG [--branch NAME] [--no-sync]`: record a check-in from the tracked files; `zit add` and `zit rm` choose which.
- `zit push [URL] [--user U]`: send the artifacts the peer lacks; the password comes from `ZIT_PASSWORD` or a prompt.
- `zit pull [URL]`: fetch the artifacts this repository lacks.
- `zit sync [URL]`: pull and push in one exchange.
- `zit timeline [-n N]`: check-ins, most recent first.
- `zit cat FILE [CHECKIN]`: a file's bytes at a check-in, to stdout.
- `zit merge NAME`: three-way merge NAME into the working tree; commit to record it, or `zit undo` to abandon it.
## Reference
- [Command reference](https://fossil.craftdesign.group/zit/doc/trunk/www/reference.html): every verb and flag, with the conventions they share.
- [Release notes 0.7.0](https://fossil.craftdesign.group/zit/doc/trunk/docs/RELEASE-NOTES-0.7.0.md): horizon clones, their measurements, and compatibility.
## Specifications
- [Artifact format](https://fossil.craftdesign.group/zit/doc/trunk/docs/rfcs/draft-fossil-artifact-format-00.txt): manifest and control-artifact cards, naming and checksums.
- [Delta format](https://fossil.craftdesign.group/zit/doc/trunk/docs/rfcs/draft-fossil-delta-format-00.txt): the byte-level delta encoding.
- [Repository state](https://fossil.craftdesign.group/zit/doc/trunk/docs/rfcs/draft-fossil-repo-state-00.txt): derived branches, tags and leaves.
- [Sync protocol](https://fossil.craftdesign.group/zit/doc/trunk/docs/rfcs/draft-fossil-sync-protocol-00.txt): HTTP clone and sync.
- [Sparse cones](https://fossil.craftdesign.group/zit/doc/trunk/docs/rfcs/draft-fossil-sparse-cone-00.txt): partial worktrees and sparse stores.
- [Horizons](https://fossil.craftdesign.group/zit/doc/trunk/docs/rfcs/draft-fossil-horizon-00.txt): content and structural horizon clones.
- [Sub-manifests](https://fossil.craftdesign.group/zit/doc/trunk/docs/rfcs/draft-fossil-submanifests-00.txt): tree manifests for wide repositories.