Artifact 1233f8f0040a462f752f4c793b390c45e65e48ea8b6cb7e0cb15e68642ca42fd:
- File docs/RELEASE-NOTES-0.3.5.md — part of check-in [882eaddc57] at 2026-09-05 17:34:27 on branch trunk — 0.3.5: version bump and release notes (user: dmestas, size: 4082) [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 (zit#174).
No artifact, tag namespace, or sync message changed.
One checkout, two tools (zit#174)
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-globis accepted as the alias ofcrlf-glob. clean-globworks as in Fossil:zit cleandeletes matching untracked files without--force, andkeep-globwins over it. A file Fossil would delete is deleted; nothing is undoable on either side.empty-dirsare created onopen,update, andcheckout.encoding-globexempts named files from the encoding check, and*disables it.dotfilesis honoured, and so ismimetypes.manifestaccepts Fossil's spellings (on,1,true,yes) as well as the letter form..fossil-settings/<name>.no-warnsilences 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, andstatusskip them unless--dotfilesis given ordotfilesis on;.zitignoreitself is hidden the same way. cleandeletesclean-globmatches without--force. Setkeep-globfor anything that must survive.- A global-tier
ignore-globnow reaches the sweep, and.zitignorecombines 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.
autosyncis 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 — are collected in zit#175.
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:
--dotfilesonadd,addremove,extras,clean, andstatus. 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.