Repository navigation
git-strata v0.1.2
git-strata 0.1.2 — main-sync
Upgrade first: read this before installing
Store migration v3 → v5 (irreversible). The first 0.1.2 daemon start migrates
<root>/store/store.db from schema v3 to v5. Before migrating it writes a verified
copy to <root>/store/backups/store-v3-<ns>.db and logs
git-strata: store schema migrated 3 -> 5; a copy of the v3 store is at … to stderr
(daemon.err.log under the LaunchAgent). 0.1.1 refuses a v5 store (Corrupt,
user_version), and refuses config.toml [repo.<name>.sync] tables and pins.json entries
containing sync_deps. There is no downgrade path other than restoring the backup, which
loses everything recorded after it. If a process still holds the old store's WAL the
migration refuses with Busy (migration_backup) and changes nothing; stop that reader and
start again.
Stores already at v5 from an unreleased main build (between the main-sync merge and this
release) are refused at open (Corrupt, "schema differs"): the v5 guard text changed before
release. Restore that store's store-v3-<ns>.db backup and let 0.1.2 migrate it again.
Stores from 0.1.0/0.1.1 (v3) are not affected.
Upgrade order:
git-strata daemon stop(wait for it; nothing publishing:daemon statusholders[]).- Back up
store/store.db*, config.toml, pins.json and the LaunchAgent plist. - Upgrade the CLI and daemon together, and the desktop app:
brew upgrade dickwu/tap/git-strata && brew upgrade --cask dickwu/tap/git-strata-desktop. - Add
[repo.<name>.sync]tables to config.toml (below) — before the first start. git-strata daemon start, then checkdaemon statusandgit-strata ls.
Never brew services start git-strata alongside your LaunchAgent (two daemons, one socket).
New: main-sync
Sessions can now keep up with origin/<default_branch>:
- Following main. The daemon fetches periodically (staging ref, compare-and-swap) and moves
idle sessions onto the new main tree with the same safety rules as auto-rebase after publish
(no open files, quiet period, conflict-free projection; otherwise deferred, never forced). git-strata sync.--checkreports local upstream state;--repo Rfetches and moves now;
conflicts produce a saved report resolved with--resolved/--keep PATH --target T --generation G;
legacy workspace conflicts can be acknowledged without a binding;--check --hookis a
cache-only Stop hook for agents.- Dependency rollouts. When main changes install inputs, the new dependency set is applied
automatically (deps = "apply") or waits forgit-strata deps approve(deps = "confirm").
deps listshows each proposal's effectivemodeand a package-change summary
(credentials in URLs are redacted). - Status / GUI / tray.
statuscarries anupstreamobject per repo (behind/ahead,
following, state, fix); the desktop app and tray show it, and only confirm-mode proposals
appear as waiting for a human.
New config: [repo.<name>.sync]
[repo.web.sync]
follow_main = true # default: publish.branch == default_branch; split-branch repos cannot enable it
deps = "apply" # default "apply"; "confirm" keeps human approval of dependency rollouts
fetch_secs = 900 # default 900; 0 disables periodic fetch; otherwise 60..=86400follow_main = false on a non-split repo requires deps = "confirm" (V16). deps is pinned
in pins.json as sync_deps: an existing pin adopts the configured value at the first 0.1.2
start; afterwards apply → confirm takes effect at the next start, while confirm → apply
needs git-strata config relax REPO (TTY + Touch ID). Without a table every non-split repo
follows main with deps = "apply", so existing Pending proposals can auto-apply on the first
start. For exactly the 0.1.1 behaviour, add follow_main = false and deps = "confirm" for
each repo before starting.
Rollback
Stop the daemon; move store/store.db and its -wal/-shm/-tshm aside (keep them); copy
store/backups/store-v3-<ns>.db (or your own copy) to store/store.db; reinstall the 0.1.1 CLI
and daemon together; remove the [repo.*.sync] tables and each pin's sync_deps; start.
See docs/config.md and docs/modules/store.md.
Apple silicon (arm64), macOS 13+. Signing: adhoc (see docs/release.md).
brew install dickwu/tap/git-strata # CLI + daemon
brew install --cask dickwu/tap/git-strata-desktop # desktop appIf macOS blocks the app: System Settings > Privacy & Security > Open Anyway, or
sudo xattr -dr com.apple.quarantine "/Applications/GIT STRATA.app".
Full Changelog: v0.1.1...v0.1.2