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 | |