Auto merge of #5947 - ebroto:rustup_doc_improvements, r=flip1995
Improve documentation related to the sync process [Rendered](https://github.com/ebroto/rust-clippy/blob/rustup_doc_improvements/CONTRIBUTING.md) r? @flip1995 changelog: none
This commit is contained in:
commit
ba43a4325c
1 changed files with 49 additions and 9 deletions
|
@ -189,6 +189,35 @@ Clippy in the `rust-lang/rust` repository.
|
||||||
For general information about `subtree`s in the Rust repository see [Rust's
|
For general information about `subtree`s in the Rust repository see [Rust's
|
||||||
`CONTRIBUTING.md`][subtree].
|
`CONTRIBUTING.md`][subtree].
|
||||||
|
|
||||||
|
### Patching git-subtree to work with big repos
|
||||||
|
|
||||||
|
Currently there's a bug in `git-subtree` that prevents it from working properly
|
||||||
|
with the [`rust-lang/rust`] repo. There's an open PR to fix that, but it's stale.
|
||||||
|
Before continuing with the following steps, we need to manually apply that fix to
|
||||||
|
our local copy of `git-subtree`.
|
||||||
|
|
||||||
|
You can get the patched version of `git-subtree` from [here][gitgitgadget-pr].
|
||||||
|
Put this file under `/usr/lib/git-core` (taking a backup of the previous file)
|
||||||
|
and make sure it has the proper permissions:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo cp --backup /path/to/patched/git-subtree.sh /usr/lib/git-core/git-subtree
|
||||||
|
sudo chmod --reference=/usr/lib/git-core/git-subtree~ /usr/lib/git-core/git-subtree
|
||||||
|
sudo chown --reference=/usr/lib/git-core/git-subtree~ /usr/lib/git-core/git-subtree
|
||||||
|
```
|
||||||
|
|
||||||
|
_Note:_ The first time running `git subtree push` a cache has to be built. This
|
||||||
|
involves going through the complete Clippy history once. For this you have to
|
||||||
|
increase the stack limit though, which you can do with `ulimit -s 60000`.
|
||||||
|
Make sure to run the `ulimit` command from the same session you call git subtree.
|
||||||
|
|
||||||
|
_Note:_ If you are a Debian user, `dash` is the shell used by default for scripts instead of `sh`.
|
||||||
|
This shell has a hardcoded recursion limit set to 1000. In order to make this process work,
|
||||||
|
you need to force the script to run `bash` instead. You can do this by editing the first
|
||||||
|
line of the `git-subtree` script and changing `sh` to `bash`.
|
||||||
|
|
||||||
|
### Performing the sync
|
||||||
|
|
||||||
Here is a TL;DR version of the sync process (all of the following commands have
|
Here is a TL;DR version of the sync process (all of the following commands have
|
||||||
to be run inside the `rust` directory):
|
to be run inside the `rust` directory):
|
||||||
|
|
||||||
|
@ -198,6 +227,7 @@ to be run inside the `rust` directory):
|
||||||
# Make sure to change `your-github-name` to your github name in the following command
|
# Make sure to change `your-github-name` to your github name in the following command
|
||||||
git subtree push -P src/tools/clippy git@github.com:your-github-name/rust-clippy sync-from-rust
|
git subtree push -P src/tools/clippy git@github.com:your-github-name/rust-clippy sync-from-rust
|
||||||
```
|
```
|
||||||
|
|
||||||
_Note:_ This will directly push to the remote repository. You can also push
|
_Note:_ This will directly push to the remote repository. You can also push
|
||||||
to your local copy by replacing the remote address with `/path/to/rust-clippy`
|
to your local copy by replacing the remote address with `/path/to/rust-clippy`
|
||||||
directory.
|
directory.
|
||||||
|
@ -213,14 +243,30 @@ to be run inside the `rust` directory):
|
||||||
3. Open a PR to `rust-lang/rust-clippy` and wait for it to get merged (to
|
3. Open a PR to `rust-lang/rust-clippy` and wait for it to get merged (to
|
||||||
accelerate the process ping the `@rust-lang/clippy` team in your PR and/or
|
accelerate the process ping the `@rust-lang/clippy` team in your PR and/or
|
||||||
~~annoy~~ ask them in the [Discord] channel.)
|
~~annoy~~ ask them in the [Discord] channel.)
|
||||||
4. Sync the `rust-lang/rust-clippy` master to the rust-copy of Clippy:
|
|
||||||
|
### Syncing back changes in Clippy to [`rust-lang/rust`]
|
||||||
|
|
||||||
|
To avoid flooding the [`rust-lang/rust`] PR queue, changes in Clippy's repo are synced back
|
||||||
|
in a bi-weekly basis if there's no urgent changes. This is done starting on the day of
|
||||||
|
the Rust stable release and then every other week. That way we guarantee that
|
||||||
|
every feature in Clippy is available for 2 weeks in nightly, before it can get to beta.
|
||||||
|
For reference, the first sync following this cadence was performed the 2020-08-27.
|
||||||
|
|
||||||
|
All of the following commands have to be run inside the `rust` directory.
|
||||||
|
|
||||||
|
1. Make sure Clippy itself is up-to-date by following the steps outlined in the previous
|
||||||
|
section if necessary.
|
||||||
|
|
||||||
|
2. Sync the `rust-lang/rust-clippy` master to the rust-copy of Clippy:
|
||||||
```bash
|
```bash
|
||||||
git checkout -b sync-from-clippy
|
git checkout -b sync-from-clippy
|
||||||
git subtree pull -P src/tools/clippy https://github.com/rust-lang/rust-clippy master
|
git subtree pull -P src/tools/clippy https://github.com/rust-lang/rust-clippy master
|
||||||
```
|
```
|
||||||
5. Open a PR to [`rust-lang/rust`]
|
3. Open a PR to [`rust-lang/rust`]
|
||||||
|
|
||||||
Also, you may want to define remotes, so you don't have to type out the remote
|
### Defining remotes
|
||||||
|
|
||||||
|
You may want to define remotes, so you don't have to type out the remote
|
||||||
addresses on every sync. You can do this with the following commands (these
|
addresses on every sync. You can do this with the following commands (these
|
||||||
commands still have to be run inside the `rust` directory):
|
commands still have to be run inside the `rust` directory):
|
||||||
|
|
||||||
|
@ -241,12 +287,6 @@ You can then sync with the remote names from above, e.g.:
|
||||||
$ git subtree push -P src/tools/clippy clippy-local sync-from-rust
|
$ git subtree push -P src/tools/clippy clippy-local sync-from-rust
|
||||||
```
|
```
|
||||||
|
|
||||||
_Note:_ The first time running `git subtree push` a cache has to be built. This
|
|
||||||
involves going through the complete Clippy history once. For this you have to
|
|
||||||
increase the stack limit though, which you can do with `ulimit -s 60000`. For
|
|
||||||
this to work, you will need the fix of `git subtree` available
|
|
||||||
[here][gitgitgadget-pr].
|
|
||||||
|
|
||||||
[gitgitgadget-pr]: https://github.com/gitgitgadget/git/pull/493
|
[gitgitgadget-pr]: https://github.com/gitgitgadget/git/pull/493
|
||||||
[subtree]: https://rustc-dev-guide.rust-lang.org/contributing.html#external-dependencies-subtree
|
[subtree]: https://rustc-dev-guide.rust-lang.org/contributing.html#external-dependencies-subtree
|
||||||
[`rust-lang/rust`]: https://github.com/rust-lang/rust
|
[`rust-lang/rust`]: https://github.com/rust-lang/rust
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue