回溯更改

有时需要将更改回溯到 Clippy 的 beta 版本。Clippy 中的回溯很少见,应得到 Clippy 团队的批准。例如,如果修复了关键的 ICE,或者某个 lint 损坏到必须在稳定版发布之前将其禁用的程度,则会进行回溯。

回溯是在 Clippy 的 beta 分支上完成的。回溯到稳定的 Clippy 版本基本上不存在,因为这将需要 Rust 的点发布,这对于 Clippy 的修复几乎是永远不合理的。

回溯更改

回溯是在 Clippy 仓库的 beta 分支上完成的。

# Assuming the current directory corresponds to the Clippy repository
$ git checkout beta
$ git checkout -b backport
$ git cherry-pick <SHA>  # `<SHA>` is the commit hash of the commit(s), that should be backported
$ git push origin backport

现在您应该测试回溯是否通过了 Rust 仓库中的所有测试。您可以使用以下命令执行此操作

# Assuming the current directory corresponds to the Rust repository
$ git checkout beta
# Make sure to change `your-github-name` to your github name in the following command
$ git subtree pull -p src/tools/clippy https://github.com/<your-github-name>/rust-clippy backport
$ ./x.py test src/tools/clippy

如果测试失败,您可以直接在 Rust 仓库中修复 Clippy。但这必须首先应用于 Clippy 的 beta 分支,然后再同步回 Rust 仓库。最简单的方法是

# In the Rust repository
$ git diff --patch --relative=src/tools/clippy > clippy.patch
# In the Clippy repository
$ git apply /path/to/clippy.patch
$ git add -u
$ git commit -m "Fix rustup fallout"
$ git push origin backport

之后,您可以打开一个 PR 到 Clippy 仓库的 beta 分支。

更新 Rust 仓库中的 Clippy

此步骤必须在上一步的 PR 合并后进行。

在回溯代码被合并到 Clippy 仓库后,该分支必须同步回 Rust 仓库的 beta 分支。

# Assuming the current directory corresponds to the Rust repository
$ git checkout beta
$ git checkout -b clippy_backport
$ git subtree pull -p src/tools/clippy https://github.com/rust-lang/rust-clippy beta
$ git push origin clippy_backport

在打开 PR 之前,请务必在 Rust 仓库中测试回溯。这是通过 ./x.py test src/tools/clippy 完成的。如果通过所有测试,则打开一个 PR 到 Rust 仓库的 beta 分支。在此 PR 中,您应该标记同意回溯的 Clippy 团队成员或 @rust-lang/clippy 团队。请务必在 PR 的标题中添加 [beta]