Artifact 5f6b02ad79a41c4f293e45aa877805867d3af0e60100496b20c554be04f9e517:
- File
docs/RELEASE-NOTES-0.3.5.md
— part of check-in
[9033c13f21]
at
2026-09-17 17:04:25
on branch trunk
— Remove issue-tracker numbers from source and documents
The tracker is disposable and does not live with the source, so a number is a dangling pointer. Every zit#NN and #NN reference in code comments, test names, help text, smoke labels, identifiers, release notes and errata is replaced by enough context to stand alone, or by a short plain statement of the problem. No behaviour changed. (user: dmestas, size: 4049) [annotate] [blame] [check-ins using]
# zit 0.3.5 zit 0.3.5 makes a checkout mean the same thing to `fossil` and to `zit`. A repository carries its policy in `.fossil-settings/` — what is ignored, what is binary, which line endings and encodings are tolerated, whether dotfiles show. Fossil honoured all of it; zit honoured part of it, with its own glob parser and its own idea of what a binary file is. A developer running stock `fossil` against a zit server could have a file accepted at commit and refused at push. That is closed. No artifact, tag namespace, or sync message changed. ## One checkout, two tools Every versionable setting Fossil 2.28 recognizes is now read at every tier — versioned file, repository, global, and `--flag` — from either `.fossil-settings/` or `.zit-settings/`: - **Glob lists** follow Fossil's tokenizer: comma or whitespace separators, single or double quotes, and a line is a comment only when its first byte is `#`. `crnl-glob` is accepted as the alias of `crlf-glob`. - **`clean-glob`** works as in Fossil: `zit clean` deletes matching untracked files without `--force`, and `keep-glob` wins over it. A file Fossil would delete is deleted; nothing is undoable on either side. - **`empty-dirs`** are created on `open`, `update`, and `checkout`. - **`encoding-glob`** exempts named files from the encoding check, and `*` disables it. - **`dotfiles`** is honoured, and so is `mimetypes`. - **`manifest`** accepts Fossil's spellings (`on`, `1`, `true`, `yes`) as well as the letter form. - **`.fossil-settings/<name>.no-warn`** silences the tier warning, in either directory. Fossil's own checkout-state names — `.fslckout`, `_FOSSIL_`, `.fos`, their `-journal`/`-wal`/`-shm` sidecars, and the `manifest` stamps — are control names now: never listed as extras and never addable while stamps are on. Content is classified the way Fossil's `lookslike.c` does it. A UTF-16 file is a Unicode file, not a binary one, and an invalid-UTF-8 file that `encoding-glob` permits is permitted — on the commit gate and on the push gate alike, from one shared classifier. A file zit committed is a file a zit server accepts. The differential smoke now carries a checkout holding every `.fossil-settings` name and requires both tools to read it identically: the same extras with and without dotfiles, the same clean preview, the same tree after update. ## Behaviour changes - **Dotfiles are hidden by default**, as in Fossil. `add`, `addremove`, `extras`, `clean`, and `status` skip them unless `--dotfiles` is given or `dotfiles` is on; `.zitignore` itself is hidden the same way. - **`clean` deletes `clean-glob` matches without `--force`.** Set `keep-glob` for anything that must survive. - A global-tier `ignore-glob` now reaches the sweep, and `.zitignore` combines with the setting instead of shadowing it. - A UTF-16 file is no longer reported as binary by commit or by a server's push policy. - `autosync` is no longer treated as versionable; a versioned value is ignored with a note. ## Known gap zit does not open a Fossil checkout in place: `.fslckout` is a SQLite database zit will not read. `zit open` the repository into a fresh directory instead. The remaining corners — glob class negation, a versioned-only `manifest` at `open`, root-name case on Linux — remain open. ## Compatibility - Artifacts, tags, and the sync protocol are unchanged; Fossil RFC revision 00 remains the target. - No on-disk format changed (the image schema stays at version 6). - Flags added: `--dotfiles` on `add`, `addremove`, `extras`, `clean`, and `status`. Output changes only where the section above says so. ## Qualification `zig build test`, `e2e`, `smoke` (Fossil interop against a real `fossil`, now with the settings-parity scenario), `muscle` (41 differential steps), `git-import-e2e`, `git-export-e2e`, and `dst`, plus the three-runner CI battery (macOS ARM64, Linux x86-64, Linux ARM64). The glob tokenizer and the content classifier were each verified by differential test against the `fossil` binary.