预提交挂钩不工作

时间:2017-01-27 13:45:19

标签: git bash githooks

我正在尝试为项目添加预提交挂钩,当我运行./.git/hook/pre-commit时,它会给出正确的结果。
提交变量OUTPUT时始终为空。

#!/bin/bash
OUTPUT=`git diff | flake8 --diff`


if [ -z "${OUTPUT}" ]
then
      echo "================== You are awesome ===================="
      echo "${OUTPUT}"
      exit 1
else
      echo ""
      echo "================== Your code stinks, Fix them ===================="
      echo ""
      echo "${OUTPUT}"
      exit 1
fi
exit 1

2 个答案:

答案 0 :(得分:1)

钩子在不同的环境中运行。 特别是PATH可能不会像您为用户设置的那样设置。 尝试使用您调用的可执行文件的完整路径,例如gitflake8,然后查看它是否有效。

答案 1 :(得分:0)

git diff会显示未经暂停的更改,即在提交中进行的更改。在pre-commit挂钩中,除非您正在进行部分提交,否则输出将为空。

您想要的是git diff --staged:它会向您显示您要提交的更改,这是您要使用flake8检查的部分。

您可以尝试在钩子中运行git status并查看"要提交的更改:"和#34;未提交的更改提交:"部分了解我的意思。

此外,您的exit 1之一应该是exit 0; - )。