Skip to content

rustc-dev-guide subtree update #144435

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 10 commits into from
Jul 26, 2025
2 changes: 1 addition & 1 deletion src/doc/rustc-dev-guide/rust-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
460259d14de0274b97b8801e08cb2fe5f16fdac5
efd420c770bb179537c01063e98cb6990c439654
27 changes: 14 additions & 13 deletions src/doc/rustc-dev-guide/src/external-repos.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,27 +40,24 @@ implement a new tool feature or test, that should happen in one collective rustc
* `portable-simd` ([sync script](https://github.com/rust-lang/portable-simd/blob/master/subtree-sync.sh))
* `rustfmt`
* `rustc_codegen_cranelift` ([sync script](https://github.com/rust-lang/rustc_codegen_cranelift/blob/113af154d459e41b3dc2c5d7d878e3d3a8f33c69/scripts/rustup.sh#L7))
* Using the [josh] tool
* `miri` ([sync guide](https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md#advanced-topic-syncing-with-the-rustc-repo))
* `rust-analyzer` ([sync script](https://github.com/rust-lang/rust-analyzer/blob/2e13684be123eca7181aa48e043e185d8044a84a/xtask/src/release.rs#L147))
* `rustc-dev-guide` ([josh sync](#synchronizing-a-josh-subtree))
* `compiler-builtins` ([josh sync](#synchronizing-a-josh-subtree))
* `stdarch` ([josh sync](#synchronizing-a-josh-subtree))
* Using the [josh](#synchronizing-a-josh-subtree) tool
* `miri`
* `rust-analyzer`
* `rustc-dev-guide`
* `compiler-builtins`
* `stdarch`

### Josh subtrees

The [josh] tool is an alternative to git subtrees, which manages git history in a different way and scales better to larger repositories. Specific tooling is required to work with josh; you can check out the `miri` or `rust-analyzer` scripts linked above for inspiration. We provide a helper [`rustc-josh-sync`][josh-sync] tool to help with the synchronization, described [below](#synchronizing-a-josh-subtree).
The [josh] tool is an alternative to git subtrees, which manages git history in a different way and scales better to larger repositories. Specific tooling is required to work with josh. We provide a helper [`rustc-josh-sync`][josh-sync] tool to help with the synchronization, described [below](#synchronizing-a-josh-subtree).

### Synchronizing a Josh subtree

We use a dedicated tool called [`rustc-josh-sync`][josh-sync] for performing Josh subtree updates.
Currently, we are migrating Josh repositories to it. So far, it is used in:
The commands below can be used for all our Josh subtrees, although note that `miri`
requires you to perform some [additional steps](https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md#advanced-topic-syncing-with-the-rustc-repo) during pulls.

- compiler-builtins
- rustc-dev-guide
- stdarch

To install the tool:
You can install the tool using the following command:
```
cargo install --locked --git https://github.com/rust-lang/josh-sync
```
Expand All @@ -80,6 +77,9 @@ switch to its repository checkout directory in your terminal).

#### Performing push

> NOTE:
> Before you proceed, look at some guidance related to Git [on josh-sync README].

1) Run the push command to create a branch named `<branch-name>` in a `rustc` fork under the `<gh-username>` account
```
rustc-josh-sync push <branch-name> <gh-username>
Expand Down Expand Up @@ -173,3 +173,4 @@ the week leading up to the beta cut.
[Toolstate chapter]: https://forge.rust-lang.org/infra/toolstate.html
[josh]: https://josh-project.github.io/josh/intro.html
[josh-sync]: https://github.com/rust-lang/josh-sync
[on josh-sync README]: https://github.com/rust-lang/josh-sync#git-peculiarities
Loading