Hasty Briefsbeta

Bilingual

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.