Skip to content
zit Artifact [0a31178729]
Login

Artifact [0a31178729]

Artifact 0a311787299914deadaa39759ffb967d5ddf92987faa5454421f19496e81c9a1:


zit 0.3.36

zit 0.3.36 adds zit uv, which lists, fetches, sends and deletes a server's unversioned files, and the main-branch setting, which says and sets a repository's main line.

No artifact, tag namespace, sync message, or on-disk repository format changed.

zit uv

Unversioned files are what a Fossil repository keeps without history: releases, downloads. quarry keeps a repository's unversioned files in its own storage and answers Fossil's protocol for them itself, so a zit repository has no reason to hold a copy. zit uv moves them between the server and plain files, and stores nothing in .zit:

zit uv list URL [-l]
zit uv pull URL NAME... [-o DIR]       # or --all
zit uv push URL FILE... [--as NAME] [--mtime SECONDS]
zit uv rm URL NAME...

It speaks Fossil's own unversioned-file protocol, so the server can be quarry or a stock fossil server. The newest time wins, as in Fossil, but where Fossil's server quietly keeps its own newer copy, zit uv refuses an older push or delete with a message, and confirms every change against the server's catalog afterwards. Reading takes the server's o capability and changing takes y; a server that shares nothing with the account says so. The login is the repository's, as for push.

sync, push, pull and clone still leave unversioned files alone.

main-branch

zit settings main-branch prints a repository's main line, and zit settings main-branch NAME sets it, as in Fossil. A forge needs the main branch for its CI and branch rules, and guessing it from branch names is wrong for any repository whose main line is not called trunk.

Fossil keeps main-branch local, and so does zit: it never arrives by sync, so a clone or mirror reports trunk until whoever serves it sets it. It belongs to one repository: it has no --global value and is never read from a versioned settings file. zit settings --changed lists it only when a repository chose something other than trunk, which is how a caller tells a configured main branch from the default.

import-fossil --submanifest used to reset a converted store's main branch to trunk. It now keeps the store's own.

Compatibility

Qualification

zig fmt --check, zig build test, e2e, smoke (now 18 scenarios, the new one zit uv against a stock fossil server), git-import-e2e, git-export-e2e, and dst, plus the three-runner CI battery.