自动提交时自动格式化 Rust(以及 C++)代码
Autoformat Rust (and also C++) code on commit automatically
我想在使用 rustfmt
提交时自动格式化代码,就像我之前为 clang-format -i
所做的那样。怎么做?
可以通过以下方式使用 git pre-commit 挂钩来完成:
- 将文件
pre-commit
添加到您的存储库中的文件夹 .githooks
,其中包含以下文本:
#!/bin/bash
exe=$(which rustfmt)
if [ -n "$exe" ]
then
# field separator to the new line
IFS=$'\n'
for line in $(git status -s)
do
# if added or modified
if [[ $line == A* || $line == M* ]]
then
# check file extension
if [[ $line == *.rs ]]
then
# format file
rustfmt $(pwd)/${line:3}
# add changes
git add $(pwd)/${line:3}
fi
fi
done
else
echo "rustfmt was not found"
fi
- 运行 在你的 repo 文件夹中:
chmod +x .githooks/pre-commit
git config core.hooksPath .githooks
要使其适用于 clang-format
,您需要将 rustfmt
替换为 clang-format -i
,并在检查文件扩展名 (cpp\h\hpp\etc
) 时进行相应的修改。
我想在使用 rustfmt
提交时自动格式化代码,就像我之前为 clang-format -i
所做的那样。怎么做?
可以通过以下方式使用 git pre-commit 挂钩来完成:
- 将文件
pre-commit
添加到您的存储库中的文件夹.githooks
,其中包含以下文本:
#!/bin/bash
exe=$(which rustfmt)
if [ -n "$exe" ]
then
# field separator to the new line
IFS=$'\n'
for line in $(git status -s)
do
# if added or modified
if [[ $line == A* || $line == M* ]]
then
# check file extension
if [[ $line == *.rs ]]
then
# format file
rustfmt $(pwd)/${line:3}
# add changes
git add $(pwd)/${line:3}
fi
fi
done
else
echo "rustfmt was not found"
fi
- 运行 在你的 repo 文件夹中:
chmod +x .githooks/pre-commit
git config core.hooksPath .githooks
要使其适用于 clang-format
,您需要将 rustfmt
替换为 clang-format -i
,并在检查文件扩展名 (cpp\h\hpp\etc
) 时进行相应的修改。