我正在尝试(但惨败)创建一个 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
首先,请注意简单的git diff
给出了工作树和索引之间的差异(即仍然可以暂存的内容),而不是即将提交的内容。使用git diff --cached
看看即将发生什么。
我在实验时遇到的第二件事是使用if [ -z $VAR ]
直接抛出错误,因为+
在开始的时候git diff
输出由 Bash 解释。确保包围$VAR
用引号来防止这种情况发生。
至于脚本,您忘记了否定测试,如果$VAR
是空的。如果 grep 的输出为空,则未找到“var_dump”,并且挂钩应返回成功。你想要的情况是如果是not空,意思是“var_dump”was找到了,它应该中止提交。
全部一起:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)