我有一个本地预提交钩子,它执行,并在我运行时按预期停止提交
git commit
另外,正如预期的那样,我可以在运行git commit -n ...
然而,运行git commit -am "My message"
或者确实只是git commit -a
似乎绕过钩子并允许处理提交。
知道为什么会这样吗?
修改:挂钩。
PROJECT_ROOT=`git rev-parse --show-toplevel`
CHANGED=`git diff --stat -- $PROJECT_ROOT/myProj/myfile.ext | wc -l`
if [ $CHANGED -gt 0 ];
then
echo "myfile.ext file has changed, are you sure you want to commit"
echo "Use the -n parameter to process this commit."
exit 1
fi
答案 0 :(得分:0)
所以,这是用户错误..
钩子在两个实例中都在运行,但是当我提供-a命令时,我用来检测文件中的更改的逻辑并不起作用。
检查远程仓库是否有效。
CHANGED=`git diff origin/master --stat -- $PROJECT_ROOT/myProj/myfile.ext | wc -l`
编辑:感谢@torek,检查更改的更合适的方法是:
CHANGED=`git diff --cached --stat -- $PROJECT_ROOT/myProj/myfile.ext | wc -l`