我有一个我正在使用的回购,没有任何其他钩子。今天,在让console.log多次启动dev的尴尬之后,我提出了以下预提交钩子:
#!/bin/sh
count=`git diff | grep -i 'console\.' | wc -l | awk '{print $1}'`
if [[ "$count" -ge 1 ]]; then
echo " remove any console statements in javascript sources"
exit 1
fi
脚本本身工作正常,只要我使用'git commit filename',git就会触发。如果我通过'git add'添加文件,或者如果我'git commit -a'(我假设只是添加了所有修改过的文件,然后运行提交),它就不会触发。为什么会这样?我不是git master,而且我已经在谷歌上做了一些狩猎,但还没有提出任何具体的建议。
答案 0 :(得分:1)
每次在repo上提交时,都会触发/执行预提交钩子。它与文件添加到索引的方式无关。我认为你在解雇和脚本做你想要的事情之间会感到困惑。添加echo
外部条件以查看脚本是否始终被触发。
我没有尝试过您发布的脚本,但我认为问题可能出在git diff
- 它应该是git diff --cached
更新
我已确认您必须使用--cached
。