Development
This repository uses mise to pin Rust.
mise install
mise run ci # fmt-check + clippy -D warnings + test, exactly what CI runs
mise run test
mise run install # build and install into ~/.cargo/bin
CI runs the suite on Linux and macOS, checks the declared MSRV, and smoke
tests the release binary against a throwaway project — the tests here drive
real git, real process groups, and real ports, so they are integration
tests by nature. On a pull request macOS runs a subset, the tests that
exercise what differs there; main runs all of it. .config/nextest.toml
lists what the subset skips, and cargo nextest run --profile macos-pr runs
it locally.
Workspace layout
crates/newgit-coreholds the domain model: branch instances, tracker definitions and their histories, the compose/split engine that turns tracker histories into one workspace history and back, resource definitions and lifecycle hooks, metadata storage, real-directory materialization, checkpoints and undo, export, cleanup, and the remote client.crates/newgitis the CLI, published as thenewgitcrate.remote/is the hosted remote: a Cloudflare Worker with Durable Objects over Artifacts repos, deployed athttps://newgit.dev..newgit/is created bynewgit init. Committed:config.toml,trackers/,resources/,scripts/. Gitignored local state:branches/,checkpoints/,logs/,state/,installs/, andlocal/— which holdstrackers.git, every tracker's history (bare repo).