cargo-rail
Rust monorepo tooling for change detection, graph unification, release automation, and split/sync.
What It Covers
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
Quick Start
Pre-built binaries: GitHub Releases
Core Workflows
Change Detection
Use plan to build the deterministic contract and run to execute only the selected work.
impact is diagnostic. scope is the execution handoff.
Graph Unification
Use unify to keep the workspace dependency graph lean and consistent.
Release Workflow
Use release for checks, changelog generation, tags, and publish ordering.
Split / Sync
Use split and sync when a crate needs to live in both a monorepo and a standalone repository.
GitHub Actions
Use cargo-rail-action for planner gates and execution scope in GitHub Actions.
Config
Primary references:
Migration
Getting Help
- Issues: GitHub Issues
- Crate: crates.io/cargo-rail
Contributing
See CONTRIBUTING.md.
Security
See SECURITY.md.
License
Licensed under MIT.