Rust monorepo tooling for change detection, graph unification, release automation, and split/sync.
plan/run: file-first change detection for selective build, test, bench, docs, and infra executionunify: workspace dependency unification, feature cleanup, unused dependency detection, and MSRV derivationrelease: version bump, changelog generation, tagging, and publish flow without a large external toolchainsplit/sync: copybara-style crate extraction and bidirectional sync without a separate DSL
cargo install cargo-rail
cargo rail init
cargo rail unify --check
cargo rail plan --merge-base --explain
cargo rail run --merge-base --profile ciPre-built binaries: GitHub Releases
Use plan to build the deterministic contract and run to execute only the selected work.
cargo rail plan --merge-base
cargo rail plan --merge-base -f github
cargo rail run --merge-base --profile ciimpact is diagnostic. scope is the execution handoff.
Use unify to keep the workspace dependency graph lean and consistent.
cargo rail unify --check
cargo rail unify --check --explain
cargo rail unifyUse release for checks, changelog generation, tags, and publish ordering.
cargo rail release check
cargo rail release run cargo-rail --bump patch --yesUse split and sync when a crate needs to live in both a monorepo and a standalone repository.
cargo rail split init crates/my-crate
cargo rail split run crates/my-crate
cargo rail sync crates/my-crate --to-remoteUse cargo-rail-action for planner gates and execution scope in GitHub Actions.
cargo rail init
cargo rail config sync
cargo rail config validatePrimary references:
- Issues: GitHub Issues
- Crate: crates.io/cargo-rail
See CONTRIBUTING.md.
See SECURITY.md.
Licensed under MIT.