25 descendants and 50 ancestors of 9f9a10e50445b9e0
|
2026-11-13
| ||
| 00:30 | 0.14.6 notes: a clone cut short still finishes by pull leaf check-in: 114141777d user: dmestas tags: trunk, version-0.14.6 | |
| 00:30 | A clone saves the origin's project code before its first artifact, so one cut short still pulls from its origin check-in: 4441f6ec99 user: dmestas tags: trunk | |
|
2026-11-12
| ||
| 22:11 | zit 0.14.6 check-in: 909c04258e user: dmestas tags: trunk | |
| 22:05 | Harness mains write stdout and stderr as streams, so appending to a log no longer overwrites it; a source guard checks that and the allocation-walk helper check-in: 2ec16bd592 user: dmestas tags: trunk | |
| 15:08 | A wrong-project refusal names the way out: clone, or push first to a new empty repository check-in: 18bf838535 user: dmestas tags: trunk | |
| 04:13 | zit serve refuses a push or pull from another project; --adopt-project lets an empty store take the first push's code check-in: b7be292bcc user: dmestas tags: trunk | |
| 02:35 | zit 0.14.5 check-in: d3dabbcaff user: dmestas tags: trunk, version-0.14.5 | |
| 01:46 | Never follow a redirect to another host or port; --resolve HOST:PORT:ADDR pins the address dialled check-in: 1a9c1eeb19 user: dmestas tags: trunk | |
| 00:13 | Test servers die with the test process, and a test that leaves one running fails check-in: 4fea7c8055 user: dmestas tags: trunk | |
|
2026-11-11
| ||
| 23:13 | Allocation-failure walks refuse in-place resizes, so their counts do not depend on the heap check-in: e225204f4b user: dmestas tags: trunk | |
| 22:29 | The recorded-refs test lists its source from inside it, so an enclosing Git checkout does not redirect the path check-in: 511c21849f user: dmestas tags: trunk, version-0.14.4 | |
| 20:37 | zit 0.14.4 check-in: 07db1d14c8 user: dmestas tags: trunk | |
| 20:09 | A saved login is sent only to the saved remote; --once on push, pull and sync saves nothing check-in: 0868d4d50a user: dmestas tags: trunk | |
| 18:59 | import-git: add from a source cut at held commits, list recorded refs, take an unconvertible encoding and tags of tags and blobs check-in: 4b32a0edf6 user: dmestas tags: trunk | |
| 04:40 | Release 0.14.3 check-in: 34989e6949 user: dmestas tags: trunk, version-0.14.3 | |
| 04:36 | import-git deltas each artifact against its hint first, as Fossil's import does, and counts the commits it exports; submanifest show reads the saved log index check-in: 677c138de2 user: dmestas tags: trunk | |
|
2026-11-09
| ||
| 06:39 | Release 0.14.2 check-in: 6b529370ce user: dmestas tags: trunk, version-0.14.2 | |
| 06:34 | addremove, extras and status --extra always include zit's own control files and say once how many dot-paths they skipped; clean still leaves control files alone check-in: 15b565dd69 user: dmestas tags: trunk | |
| 03:08 | The diff cache encoder sizes and frees its allocations by name instead of taking them from an arena, so its allocation count is the same on every heap check-in: d5188455c9 user: dmestas tags: trunk, version-0.14.1 | |
| 02:36 | Release 0.14.1 check-in: 7eb82c7f9e user: dmestas tags: trunk | |
| 02:31 | annotate caches each version-to-version diff and splits each version into lines once, so a later annotate at any limit replays its diffs check-in: a6da9b88cc user: dmestas tags: trunk | |
|
2026-11-08
| ||
| 23:27 | Linux ARM64's CI job gets a 45-minute limit; macOS and Linux x64 keep 30 check-in: a67d9d3267 user: dmestas tags: trunk | |
| 22:29 | Release 0.14.0 check-in: ec73978f5d user: dmestas tags: trunk, version-0.14.0 | |
| 22:21 | The shun fingerprint folds the masked bit only for signed rows, so a store with plain shun rows keeps the caches older releases built check-in: 5e7b1fdc7a user: dmestas tags: trunk | |
| 21:33 | sync and pull -F json report erasures_deferred, the carried erasure rows not yet fully applied check-in: ff95f2b7df user: dmestas tags: trunk | |
| 19:59 | Sync-draft citations re-keyed to the draft's line numbers after the erasure section check-in: 9f9a10e504 user: dmestas tags: trunk | |
| 19:54 | Sync carries signed erasures: an owner-signed shun row in Fossil's /shun area is asked for on every zit session, verified against the repository's pinned erasure key, and applied after its not-before time check-in: 54831f82d6 user: dmestas tags: trunk | |
| 19:37 | annotate -n answers from the blame cache when no walked version masks a parent below the window, and log PATH walks its ancestry with bitsets check-in: 3314298ade user: dmestas tags: trunk | |
| 16:57 | 0.13.0 notes: upgrade costs measured on a forge's stores check-in: 77edd09407 user: dmestas tags: trunk | |
| 16:17 | A daemon lets go of its store's lock once it stops listening, and a start waits up to 2 s for a lock whose daemon no longer answers on the socket check-in: 4f586929fd user: dmestas tags: trunk | |
| 14:08 | Release 0.13.0 check-in: b1da505531 user: dmestas tags: trunk, version-0.13.0 | |
| 11:59 | Daemon opens the commit core on first commit, catches its reader up in place, and pages feed with limit check-in: 04aeaeface user: dmestas tags: trunk | |
| 05:22 | Three-way merge walks the two edit scripts as Fossil's merge3.c does (D. Richard Hipp), so an edit beside the other side's change merges cleanly and every merge decision and merged text matches fossil 3-way-merge, except where a final newline or a byte-order mark is kept on purpose check-in: c1b7a787d9 user: dmestas tags: trunk | |
| 04:02 | log for a path takes --offset, as Fossil's finfo spells it, and --cursor, the daemon's cursor, returning the next one in -F json; a check-in's entry for one file is found by searching its manifest instead of parsing it whole, and JSON rows take user and comment from derived state, so a cursor page of a deep history costs tens of milliseconds check-in: 1ed38cab8a user: dmestas tags: trunk | |
| 03:00 | annotate finds a file's versions from the file-history index and walks only as far as -n or the nearest cached version needs, and a repository lookup that scanned the whole image per call builds a table instead, so annotate -n 50 on a 644 MB store costs 50 ms instead of 38 s check-in: 19bcb02c0c user: dmestas tags: trunk | |
| 01:44 | The line diff and merge3 size every buffer from the line counts up front, so their allocations depend only on the input check-in: 501d2ba05f user: dmestas tags: trunk | |
| 01:18 | Every line diff in zit, from diff and its line counts to annotate and merge, is a port of Fossil's diff.c line diff (D. Richard Hipp), replacing the patience and Myers engines, so zit aligns repeated lines as Fossil does and annotate credits only the lines a check-in's diff adds; the blame cache and line-count cache are rebuilt check-in: 382fad4bad user: dmestas tags: trunk | |
|
2026-11-07
| ||
| 23:33 | annotate keeps a per-file blame cache of recently annotated versions and starts its walk from the nearest cached ancestor, so annotating a tip after a new commit costs tens of milliseconds instead of seconds; an answer that depended on a missing parent, a gap, a limit or a policy absence is never cached check-in: a1c2a0fd4d user: dmestas tags: trunk | |
| 22:21 | log for a path reads content only for the rows on the page, deciding the rest from the file index, so a 200-row page of a 2,000-version history costs tens of milliseconds; annotate -n N stops after N versions of the file as Fossil's annotate does, leaving older lines unattributed check-in: 3b7445b9cb user: dmestas tags: trunk | |
| 20:28 | Release 0.12.1 check-in: e5e40bc894 user: dmestas tags: trunk, version-0.12.1 | |
| 20:02 | annotate frees each version once nothing still reads it and bounds its content cache, so a 29,000-line file over 1,600 check-ins peaks at 76 MB instead of 2.7 GB; log for a path lists newest first by check-in time, ties broken as timeline does, so -n and the daemon's cursor page the history without repeats or gaps check-in: bcda930fb8 user: dmestas tags: trunk | |
| 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 | |