如果想要在提交之前运行代码性检查工具,并在测试失败时阻止提交,该怎样配置 Git 存储库?
参考答案:
要在提交之前运行代码性检查工具,并在测试失败时阻止提交,你可以使用Git的pre-commit
钩子(hook)。以下是如何配置它的步骤:
- 创建或编辑 pre-commit 钩子脚本
在Git存储库的根目录下,找到.git/hooks
目录。如果没有pre-commit
文件,你可以复制pre-commit.sample
并重命名为pre-commit
。然后,编辑pre-commit
文件,使其包含你想要运行的代码检查命令。
例如,假设你使用flake8
进行Python代码检查,你可以在pre-commit
文件中添加以下内容:
#!/bin/sh
# 检查是否有未追踪的文件
if [ -n "$(git status --porcelain)" ]; then
echo "请先提交或暂存所有更改。"
exit 1
fi
# 运行 flake8 进行代码检查
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# 如果 flake8 返回非零退出码,则阻止提交
if [ $? -ne 0 ]; then
exit 1
fi
这个脚本首先检查是否有未追踪的文件,然后运行flake8
进行代码检查。如果flake8
返回非零退出码(表示有错误),则脚本退出并阻止提交。
- 使脚本可执行
运行以下命令,使pre-commit
脚本可执行:
chmod +x .git/hooks/pre-commit
- 测试配置
现在,当你尝试提交更改时,Git将运行pre-commit
钩子脚本。如果脚本中的代码检查命令返回非零退出码,提交将被阻止。
你可以通过执行以下命令进行测试:
git commit -m "Test commit"
如果代码检查失败,你将看到相应的错误消息,并且提交将被取消。
这样,你就成功配置了Git存储库,以在提交之前运行代码性检查工具,并在测试失败时阻止提交。