跳到主要内容

如果想要在提交之前运行代码性检查工具,并在测试失败时阻止提交,该怎样配置 Git 存储库?

参考答案:

要在提交之前运行代码性检查工具,并在测试失败时阻止提交,你可以使用Git的pre-commit钩子(hook)。以下是如何配置它的步骤:

  1. 创建或编辑 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返回非零退出码(表示有错误),则脚本退出并阻止提交。

  1. 使脚本可执行

运行以下命令,使pre-commit脚本可执行:

chmod +x .git/hooks/pre-commit
  1. 测试配置

现在,当你尝试提交更改时,Git将运行pre-commit钩子脚本。如果脚本中的代码检查命令返回非零退出码,提交将被阻止。

你可以通过执行以下命令进行测试:

git commit -m "Test commit"

如果代码检查失败,你将看到相应的错误消息,并且提交将被取消。

这样,你就成功配置了Git存储库,以在提交之前运行代码性检查工具,并在测试失败时阻止提交。