Artifact a9a6ac57a7c2bc2ef66eff1a043d0c58a5c69aa9c9d8f835c51fed3f48a8d456:
- File
src/repository.zig
-
2026-07-19 21:36:07
— part of check-in
[b503efb9f2]
on branch iss7
— timeline: read fossil-legacy check-in manifests instead of dropping them
Repository.manifest parsed check-in manifests through the strict reference parser, which rejects fossil's own 2008 cvs2fossil-era manifests: their F cards carry a dangling trailing space after the hash, where the §4.2 perm token (1*tchar) permits none. On a large fossil-origin repository this made `zit timeline` stop at the first such check-in and exit non-zero, silently losing that check-in and every older one — a functional loss of history, surfaced as a misleading "input/output error".
Parse through parseForImport, the same read-path interop the diff baseline already relies on: the strict parser still runs first and stays the sole grammar oracle; the trailing-separator tolerance engages only when an otherwise well-framed, Z-valid artifact is rejected. OwnedManifest now also owns the normalized copy the manifest borrows when that tolerance fires. (user: dmestas, size: 34063) [annotate] [blame] [check-ins using]
-
2026-07-19 21:52:53
— part of check-in
[4e8d402bb6]
on branch trunk
— Merge iss7: read fossil's legacy check-ins instead of dropping history
timeline stopped partway through a large fossil-origin repository and lost every check-in at and beyond that point. The cause was not an I/O fault, as the shared "input/output error" wording suggested, but a strict parse: fossil's own 2008 cvs2fossil-era check-ins carry F cards with a dangling trailing separator after the hash, which the §4.2 grammar has no production for and the reference parser rejects as corrupt. Repository.manifest -- the timeline read path -- used that strict parser, so the first such check-in and all older ones vanished.
It now reads through parseForImport, the same read-path tolerance the diff baseline already relies on. The strict parser still runs first and stays the sole grammar oracle; tolerance engages only when a well-framed, Z-valid artifact is rejected, strips exactly one trailing separator per F card, re-seals the checksum, and re-runs the strict parser -- so any other malformation is still refused. Complete history renders again, down to the repository's 2007 root. (user: dmestas, size: 34063) [annotate] [blame] [check-ins using]
-
2026-07-19 21:36:07
— part of check-in
[b503efb9f2]
on branch iss7
— timeline: read fossil-legacy check-in manifests instead of dropping them