Josh helps Rust manage code across multiple repositories
5 hours ago
- #rust-development
- #git-workflows
- #version-control
- Rust Project maintains separate git repos for tools like Cargo and Clippy to tailor issue management and CI workflows.
- Tools need integration into rust-lang/rust repo for CI component distribution and handling breaking changes to compiler APIs.
- Traditional solutions like monorepos, git submodules, and git subtrees each have drawbacks for cross-repo dependencies.
- Josh (Just One Single History) is a fast git filtering tool used for bidirectional syncs between parent and subprojects.
- Josh overcomes limitations of git subtree, being faster and handling complex histories better, currently used for Miri and Rust Analyzer.
- Josh-sync tool simplifies sync operations, with GitHub Actions automating pulls and managing conflicts via CI notifications.
- Josh's maintainers continuously improve it based on Rust Project's use-cases, addressing issues like merge commit proliferation.