mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 13:13:34 +00:00
Document how to create a Clippy release
This commit is contained in:
parent
2ff568d746
commit
14534fa071
1 changed files with 101 additions and 0 deletions
101
doc/release.md
Normal file
101
doc/release.md
Normal file
|
@ -0,0 +1,101 @@
|
|||
# Release a new Clippy Version
|
||||
|
||||
_NOTE: This document is probably only relevant to you, if you're a member of the
|
||||
Clippy team._
|
||||
|
||||
Clippy is released together with stable Rust releases. The dates for these
|
||||
releases can be found at the [Rust Forge]. This document explains the necessary
|
||||
steps to create a Clippy release.
|
||||
|
||||
1. [Find the Clippy commit](#find-the-clippy-commit)
|
||||
2. [Tag the stable commit](#tag-the-stable-commit)
|
||||
3. [Update `CHANGELOG.md`](#update-changelogmd)
|
||||
4. [Remerge the `beta` branch](#remerge-the-beta-branch)
|
||||
5. [Update the `beta` branch](#update-the-beta-branch)
|
||||
|
||||
_NOTE: This document is for stable Rust releases, not for point releases. For
|
||||
point releases, step 1. and 2. should be enough._
|
||||
|
||||
[Rust Forge]: https://forge.rust-lang.org/
|
||||
|
||||
|
||||
## Find the Clippy commit
|
||||
|
||||
The first step is to tag the Clippy commit, that is included in the stable Rust
|
||||
release. This commit can be found in the Rust repository.
|
||||
|
||||
```bash
|
||||
# Assuming the current directory corresponds to the Rust repository
|
||||
$ git fetch upstream # `upstream` is the `rust-lang/rust` remote
|
||||
$ git checkout 1.XX.0 # XX should be exchanged with the corresponding version
|
||||
$ git submodule update
|
||||
$ SHA=$(git submodule status src/tools/clippy | awk '{print $1}')
|
||||
```
|
||||
|
||||
|
||||
## Tag the stable commit
|
||||
|
||||
After finding the Clippy commit, it can be tagged with the release number.
|
||||
|
||||
```bash
|
||||
# Assuming the current directory corresponds to the Clippy repository
|
||||
$ git checkout $SHA
|
||||
$ git tag rust-1.XX.0 # XX should be exchanged with the corresponding version
|
||||
$ git push upstream master --tags # `upstream` is the `rust-lang/rust-clippy` remote
|
||||
```
|
||||
|
||||
After this, the release should be available on the Clippy [release page].
|
||||
|
||||
[release page]: https://github.com/rust-lang/rust-clippy/releases
|
||||
|
||||
|
||||
## Update `CHANGELOG.md`
|
||||
|
||||
For this see the document on [how to update the changelog].
|
||||
|
||||
[how to update the changelog]: https://github.com/rust-lang/rust-clippy/blob/master/doc/changelog_update.md
|
||||
|
||||
|
||||
## Remerge the `beta` branch
|
||||
|
||||
This step is only necessary, if since the last release something was backported
|
||||
to the beta Rust release. The remerge is then necessary, to make sure that the
|
||||
Clippy commit, that was used by the now stable Rust release, persists in the
|
||||
tree of the Clippy repository.
|
||||
|
||||
```bash
|
||||
# Assuming `HEAD` is the current `master` branch of rust-lang/rust-clippy
|
||||
$ git checkout -b backport_remerge
|
||||
$ git merge beta
|
||||
$ git diff # This diff has to be empty, otherwise something with the remerge failed
|
||||
$ git push origin backport_remerge # This can be pushed to your fork
|
||||
```
|
||||
|
||||
After this, open a PR to the master branch. In this PR, the commit hash of the
|
||||
`HEAD` of the `beta` branch must exists. In addition to that, no files should
|
||||
be changed by this PR.
|
||||
|
||||
|
||||
## Update the `beta` branch
|
||||
|
||||
This step must be done, **after** the PR of the previous step was merged.
|
||||
|
||||
First, the Clippy commit of the `beta` branch of the Rust repository has to be
|
||||
determined.
|
||||
|
||||
```bash
|
||||
# Assuming the current directory corresponds to the Rust repository
|
||||
$ git checkout beta
|
||||
$ git submodule update
|
||||
$ BETA_SHA=$(git submodule status src/tools/clippy | awk '{print $1}')
|
||||
```
|
||||
|
||||
After finding the Clippy commit, the `beta` branch in the Clippy repository can
|
||||
be updated.
|
||||
|
||||
```bash
|
||||
# Assuming the current directory corresponds to the Clippy repository
|
||||
$ git checkout beta
|
||||
$ git rebase $BETA_SHA
|
||||
$ git push upstream beta [-f] # This requires a force push, if a remerge was done
|
||||
```
|
Loading…
Reference in a new issue