当var_dump存在时,中止git pre-commit钩子

时间:2012-05-31 19:39:37

标签: git bash githooks

我正在尝试(但是失败了)制作一个git预提交钩子,检查我修改过的文件中是否存在var_dump,如果找到则退出。我遇到的问题是它似乎总是在中止提交。这是我的预提交文件的内容:

VAR=$(git diff | grep -w "var_dump")
if [ -z $VAR ]; then
  echo "You've left a var_dump in one of your files! Aborting commit..."
  exit 1
fi

1 个答案:

答案 0 :(得分:9)

首先,请注意,普通git diff给出了工作树和索引之间的差异(即仍然可以暂存的内容),而不是即将提交的内容。使用git diff --cached查看将要提交的内容。

我在试验时遇到的第二件事是使用if [ -z $VAR ]直接引发错误,因为+输出开头的git diff由Bash解释。请务必使用引号括住$VAR以防止此情况发生。

对于脚本,如果$VAR为空,则忘记否定测试。如果grep的输出为空,则找不到“var_dump”,并且钩子应该返回成功。你想要的情况是,如果它为空,意味着找到“var_dump” ,它应该中止提交。

所有在一起:

VAR=$(git diff --cached | grep -w "var_dump")
if [ ! -z "$VAR" ]; then
  echo "You've left a var_dump in one of your files! Aborting commit..."
  exit 1
fi