Skip to content

Commit 5438ab1

Browse files
KobzolAmanieu
authored andcommitted
Add josh synchronization scripts
1 parent 55862bc commit 5438ab1

File tree

6 files changed

+817
-0
lines changed

6 files changed

+817
-0
lines changed

README.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,52 @@ This repository contains two main crates:
1616

1717
The `std::simd` component now lives in the
1818
[`packed_simd_2`](https://github.com/rust-lang/packed_simd) crate.
19+
20+
## Synchronizing josh subtree with rustc
21+
22+
This repository is linked to `rust-lang/rust` as a [josh](https://josh-project.github.io/josh/intro.html) subtree. You can use the following commands to synchronize the subtree in both directions.
23+
24+
You'll need to install `josh-proxy` locally via
25+
26+
```
27+
cargo install josh-proxy --git https://github.com/josh-project/josh --tag r24.10.04
28+
```
29+
Older versions of `josh-proxy` may not round trip commits losslessly so it is important to install this exact version.
30+
31+
### Pull changes from `rust-lang/rust` into this repository
32+
33+
1) Checkout a new branch that will be used to create a PR into `rust-lang/stdarch`
34+
2) Run the pull command
35+
```
36+
cargo run --manifest-path josh-sync/Cargo.toml rustc-pull
37+
```
38+
3) Push the branch to your fork and create a PR into `stdarch`
39+
40+
### Push changes from this repository into `rust-lang/rust`
41+
42+
NOTE: If you use Git protocol to push to your fork of `rust-lang/rust`,
43+
ensure that you have this entry in your Git config,
44+
else the 2 steps that follow would prompt for a username and password:
45+
46+
```
47+
[url "git@github.com:"]
48+
insteadOf = "https://github.com/"
49+
```
50+
51+
1) Run the push command to create a branch named `<branch-name>` in a `rustc` fork under the `<gh-username>` account
52+
```
53+
cargo run --manifest-path josh-sync/Cargo.toml rustc-push <branch-name> <gh-username>
54+
```
55+
2) Create a PR from `<branch-name>` into `rust-lang/rust`
56+
57+
#### Minimal git config
58+
59+
For simplicity (ease of implementation purposes), the josh-sync script simply calls out to system git. This means that the git invocation may be influenced by global (or local) git configuration.
60+
61+
You may observe "Nothing to pull" even if you *know* rustc-pull has something to pull if your global git config sets `fetch.prunetags = true` (and possibly other configurations may cause unexpected outcomes).
62+
63+
To minimize the likelihood of this happening, you may wish to keep a separate *minimal* git config that *only* has `[user]` entries from global git config, then repoint system git to use the minimal git config instead. E.g.
64+
65+
```
66+
GIT_CONFIG_GLOBAL=/path/to/minimal/gitconfig GIT_CONFIG_SYSTEM='' cargo run --manifest-path josh-sync/Cargo.toml -- rustc-pull
67+
```

0 commit comments

Comments
 (0)