发生了什么
我们最近合并了两个 PR,它们共同重新格式化了编译器代码树中的所有代码。
第一个 PR 是 #65939,它包含了最初的格式化基础设施。我们目前直接使用 rustfmt
,版本固定在 src/stage0.txt
文件中指定。我们预计会根据需要进行更新,否则每个周期更新一次(很可能与 bootstrap 升级同步)。
第二个 PR 重新格式化了代码库的大部分内容,它是 #67540。
此更改已与以下 rustfmt 配置一起合并。请注意,此配置可能会发生变化(特别是,merge_derives 将来可能会被移除),但应该相当稳定。您的编辑器应在 rust-lang/rust 仓库中自动选择此配置(它位于根目录的 rustfmt.toml
文件中)。
version = "Two"
use_small_heuristics = "Max"
merge_derives = false
如何使用格式化
您可以使用 x.py fmt
重新格式化仓库,并使用 x.py fmt --check
来验证格式;这些命令目前有点慢。Tidy 目前也会内部运行这两个检查中的后者(x.py fmt --check
),但如果无法提高整个代码库的格式化速度,将来可能会改变。
解决冲突
如果您正在处理一个进行中的分支,很可能会遇到合并冲突。以下内容应该能帮助您解决它们
#!/bin/bash
if [ ; then
else
branch= # get branch name
for; do
done
# put yourself atop the format the world PR
fi
此脚本应保存到您的 Rust checkout 的父目录中的 format.sh
文件中,然后运行 git fetch upstream && ../format.sh
。upstream
应该是 rust-lang/rust 远程仓库的名称。
脚本运行后,您将基于 a916ac22b9f7f
提交。您可能希望接着运行 git rebase -i upstream/master
或类似命令来完成,但上面的脚本至少可以帮您通过格式化 PR 的部分。
这应该可以正确解决大部分冲突,但偶尔如果您修改了 import 相关内容(我遇到的一个常见情况)或其他方面,可能无法完全正确解决。不过,通常这会解决 99% 的问题,其余的可以在之后手动修复。