Skip to content
zit Timeline
Login

Timeline

50 ancestors of 6aba9adfd908700e

2026-11-07
19:00
ls --long takes a file's size from its frame and its class from the recorded memo, as Fossil's ls -v reads blob.size, rebuilding a file only when its class is unknown; zit verify, not ls, proves content readable check-in: 6aba9adfd9 user: dmestas tags: trunk
17:49
The 0.12.0 notes give the forge's measured first-command rebuild costs, which land on whichever command comes first check-in: 5a94678fe8 user: dmestas tags: trunk
16:32
Release 0.12.0 check-in: 9fd8bf44bd user: dmestas tags: trunk, version-0.12.0
16:06
The log index and the file-history index check their contents in 4 KiB blocks as a call reads them, behind a header and block table checked at open, so an open no longer checksums whole files; a damaged block is repaired from the log, and a log that cannot be rescanned fails as an unreadable store; the file index gains a path table so a lookup bisects check-in: b377071cb2 user: dmestas tags: trunk
13:22
log for a path reads each sub-manifest node through the walk's plaintext cache and parses only the line that decides the descent, so a one-shot log of 20 versions on a 42k-file tree store costs about 3 ms instead of 11 check-in: 5aea2fedb9 user: dmestas tags: trunk
12:29
A diff between two check-ins walks both trees together and skips every sub-manifest both share by hash, so a one-file diff on a 42k-file tree store costs about 3 ms instead of 83; used by diff, the daemon's diff and timeline -v check-in: 3d9d26ef9b user: dmestas tags: trunk
03:02
Release 0.11.0 check-in: b182f0e6c1 user: dmestas tags: trunk, version-0.11.0
02:39
Sync and pull open the store before reading leaves for the fork report, so a torn last frame left by a crash is repaired first; the simulator counts a forked sync or pull as success check-in: 5da8555024 user: dmestas tags: trunk
01:41
A no-op sync or pull does work in proportion to what changed: nothing is persisted when nothing arrived, the store is opened once for its settings, resolved clusters and outstanding sub-manifest references are kept in sidecars checked against the log, and fork leaves come from the cached view, so a no-op sync at 42k files costs about 7 ms of CPU instead of 476 check-in: 645e0a6060 user: dmestas tags: trunk
01:21
A process reads and checks its .zit-checkout container once and serves every section from those bytes, and annotate opens the repository the fast way, so info, cat and annotate cost about a millisecond less at 42k files check-in: 0856fc67a4 user: dmestas tags: trunk
00:14
The store-lock e2e asks storelock for the in-process refusal instead of reopening the store, so the runner no longer prints a lock notice; the test runner fails any test that ends holding a store lock check-in: 42354433d6 user: dmestas tags: trunk
2026-11-06
23:29
sync and pull report a branch left with several open leaves, on stderr and in -F json with the leaves and the paths that differ, and exit 9 when this exchange brought or made the fork; a bare pull keeps its options check-in: bb47520972 user: dmestas tags: trunk
22:54
The daemon folds its own commits into the view it holds and writes the cache, log index and file index lazily, so a one-file commit costs about 4 ms at 42k files instead of 24; log for a path finds each version by walking the tree and reads its size from the frame, 1 ms for 20 rows at 42k; muscle works in its own scratch directory check-in: 0e8724bbad user: dmestas tags: trunk
21:19
zit daemon answers log for a path in pages, annotate with or without --partial, and a single file's diff with line text, sharing the CLI's code so the answers match check-in: d5b1152455 user: dmestas tags: trunk
21:15
Each dst and smoke run works in its own scratch directory, kept and named on failure, so two runs from one checkout no longer delete each other's workspace check-in: 845e3c2b35 user: dmestas tags: trunk
19:37
zit daemon drains a refused client before closing, up to 64 MiB or 2 s, so a client still sending an oversized header or trailer reads the error line instead of a broken pipe check-in: 8d52c3ce9a user: dmestas tags: trunk
18:58
Release 0.10.1 check-in: 1ad8b1a063 user: dmestas tags: trunk, version-0.10.1
18:54
A sub-manifest received as a delta before its basis closes its tree's gap when the basis arrives, so a deepen from a zit server completes; a store header torn while its version is restamped reads as the stamp it was leaving instead of corrupt, and a new horizon clone writes its version when the store is created check-in: 8a547a40f9 user: dmestas tags: trunk
18:17
zit daemon records merges: commit takes a parents list, written as zit merge and a commit write it, so two devices sending the same merge converge on one check-in; merge_base and diff ops answer read-only, diff sharing its comparison with zit diff check-in: 4aab5d6849 user: dmestas tags: trunk
16:55
The release workflow checks the version constant in main.zig, where the version string now lives check-in: 9423667c03 user: dmestas tags: trunk
16:13
Release 0.10.0 check-in: 9fd9d8e3e9 user: dmestas tags: trunk, version-0.10.0
15:47
zit daemon answers lookup: whether a check-in with a given time, user and comment is stored, optionally on a given parent, by the same match a resend uses, without taking the writer lock or writing check-in: abb6786b0e user: dmestas tags: trunk
14:30
A commit may rename a file and give it new content in one check-in, as a rename plus a put of its new name; commit takes --date-override with Fossil's formats, and with -R a resend carrying the same date, user and comment answers with the stored check-in check-in: 560c41cefc user: dmestas tags: trunk
13:56
New names follow Fossil's strict path rule when written by commit, add, addremove and mv: valid UTF-8, nothing above U+FFFF, no private-use characters, no backslash, plus no control bytes; user and branch refuse control bytes; Fossil's reserved names are refused; names read from existing check-ins stay lenient, so a delete or rename can remove one check-in: d040bd2d7f user: dmestas tags: trunk
12:58
zit daemon serves one store over a local Unix socket: commit, batch with one fsync per batch, feed, get and status as JSON with raw trailers, acknowledging only after the fsync; a resend is matched on time, user and comment and answered with the stored check-in; the socket directory and file are owner-only and other users are refused check-in: d78ffcad0b user: dmestas tags: trunk
04:10
commit -R takes repeatable --rename OLD NEW and --delete PATH with or without --stdin, applied as one check-in through the direct-commit core, byte-identical to mv or rm and a checkout commit; a resend of a stored request returns its check-in check-in: 289dd7f6b7 user: dmestas tags: trunk
02:58
commit -R --stdin records through a direct-commit core that builds the check-in from the parent manifest and its edits, with no ephemeral checkout, byte-identical to a checkout commit of the same change; the core takes put, delete and rename, imports nothing from the CLI, and a caller holding it open commits in about 20 ms on a 42k-file tree store check-in: e1d2e2fbff user: dmestas tags: trunk
00:23
annotate --partial reads through a purged or shunned version and marks the lines it cannot trace with '~', exiting 0; plain annotate still refuses with exit 8 check-in: 3a52ad2bc9 user: dmestas tags: trunk
2026-11-05
22:54
Release 0.9.1 check-in: 7b62e60bb2 user: dmestas tags: trunk, version-0.9.1
22:50
log PATH -F json lists a purged, shunned or elided version with null size and its reason instead of failing; log PATH for a name no check-in held answers from the file index without walking history; a clone that fails before its store commits removes what it made; help exit-codes lists commit's exit 3 check-in: a22983364f user: dmestas tags: trunk
21:24
Smoke starts every fossil and zit server through the retrying starter, so a port taken between pick and bind tries a fresh one, and a server that never binds is reported with how it ended and its stderr check-in: affdc72275 user: dmestas tags: trunk
19:13
Release 0.9.0 check-in: b4566e6aad user: dmestas tags: trunk, version-0.9.0
18:43
purge artifacts removes named file versions to thin a history, keeping every check-in and refusing any version an open leaf or the checkout holds; a local .zit-thinned list keeps pull and serve from bringing them back; cat, diff and annotate exit 8 for content absent by policy, and annotate no longer credits a removed version's lines to the next one check-in: 79903b742d user: dmestas tags: trunk
15:54
crosslink --lines finds each changed file's old side by name, through the parent's sub-manifest slots or a search of its F cards, instead of flattening the parent's whole tree per check-in, and reads parent manifests through its plaintext cache check-in: 399cc6b321 user: dmestas tags: trunk
13:19
A sender answers a gimme or uploads an artifact it stores as a delta in Fossil's delta form, sending the stored delta when its basis is held, unshunned, in the requester's cone and readable by the peer, so a pull of a few one-file check-ins moves kilobytes check-in: d8cc78e946 user: dmestas tags: trunk
10:37
Sync, pull and a server taking a push store an artifact received whole as a delta, a check-in against its parent, so receiving a one-file check-in costs about what the sender paid instead of a full manifest check-in: 863ba33f03 user: dmestas tags: trunk
09:31
A flat manifest is stored as a delta of its skip base, the ancestor at its height with the lowest set bit cleared, so a chain is popcount(height) deep and no commit stores a whole manifest; pack keeps the structure. Skip deltas after Subversion (Greg Hudson) check-in: bed8346191 user: dmestas tags: trunk
02:23
log CHECKIN PATH and annotate follow renames, continuing under the old name below the check-in that recorded one, with --no-follow for the name-literal view; crosslink adds a rename line and log -F json names each row check-in: dc3fb3ca95 user: dmestas tags: trunk
00:47
commit -R STORE --stdin PATH records one file's bytes from stdin as a check-in with no checkout of the caller's, holding the store's lock throughout so concurrent writers land in order; unchanged bytes exit 3 check-in: fd764eed5e user: dmestas tags: trunk
2026-11-04
23:45
The cache carries a checksum of its image alone, so an open checks what it reads instead of the whole cache, and the record body is read through a mapping instead of copied onto the heap check-in: e9027611fe user: dmestas tags: trunk
23:04
A sparse cone can carry the parents property (--cone-parents): the root's files and the files directly in each parent directory of a member are covered too, so a narrow cone is navigable; the sparse-cone draft states the rule and its cone-parents pragma check-in: 2199ee2ef3 user: dmestas tags: trunk
21:15
log CHECKIN PATH and diff between check-ins take -F json, in Fossil's field names, so an application reads a file's history and a two-version diff without parsing text check-in: 49bd94f30d user: dmestas tags: trunk
20:15
Persist stores a received delta whose basis is not memoised as it arrived, and checks every such delta before the commit by walking each delta tree once, so a large clone no longer rebuilds each artifact through its whole chain check-in: d8c302d1ab user: dmestas tags: trunk
19:50
import-git --into opens the destination's log through its persisted scan index, so a long history is not walked frame header by frame header before the import starts check-in: fec7b411d2 user: dmestas tags: trunk
19:32
import-git --into checks a mapped check-in by lookup when the map's inventory hash already proves the store holds what the import wrote, instead of reading every check-in back through its delta chain check-in: 88fdaf41b7 user: dmestas tags: trunk
18:19
A horizon clone's classification is saved with the unfetched file versions its kept manifests cite, by name, so a no-op sync resumes from it instead of classifying the whole store again check-in: e76d97937a user: dmestas tags: trunk
17:35
revert with no paths finds what changed first, as status does, and restores and journals only that, looking files up in a check-in parsed once, so discarding one edit on a large tree no longer reads every file check-in: 194b70bd59 user: dmestas tags: trunk
16:01
The horizon draft says a tied candidate that another descends from through any parent is dropped, merge parents included check-in: b09ee3ed91 user: dmestas tags: trunk
15:52
zit init --submanifest K starts a repository with sub-manifests on and k pinned, so a tree that will grow wide is a tree from its first check-in check-in: 1fbc90c725 user: dmestas tags: trunk
14:29
File reads and writes move at most 1 GiB per call, so on macOS a store whose cache passes 2 GiB resumes from it instead of re-deriving the whole history check-in: 3d4b8d295c user: dmestas tags: trunk
14:08
zit serve --read-only refuses every push while serving clones and pulls check-in: a7f4801ca7 user: dmestas tags: trunk