我试图阻止git提交继续使用预提交挂钩。从阅读手册开始,它应该在你返回0以外的退出代码时停止。我正在测试以查看csscomb命令是否返回错误,如果是,则打破循环并退出,但git commit仍然继续通过fatal: [192.168.99.135] => {'msg': "AnsibleError: file: roles/basho_bench/templates/http_fix_1min.conf.template.j2, line number: 24, error: expected token 'end of print statement', got 'Content'", 'failed': True}
fatal: [192.168.99.135] => {'msg': 'One or more items failed.', 'failed': True, 'changed': False, 'results': [{'msg': "AnsibleError: file: roles/basho_bench/templates/http_fix_1min.conf.template.j2, line number: 24, error: expected token 'end of print statement', got 'Content'", 'failed': True}]}
输入消息。
我已经从https://github.com/filtercake/git-pre-commit-csscomb
分叉并修改了以下脚本git commit (-a)
答案 0 :(得分:2)
git diff-index --cached --full-index --diff-filter=ACM $against | \
{
while read -r line; do
这是你的麻烦。多命令管道阶段在子shell中运行,并且该循环的退出退出其子shell。子shell也有自己的环境,因此您无法从它们传递变量设置。
while read -r; do
if ! good $REPLY; then exit 1; fi
done <<EOD
$(git diff-index --cached --full-index --diff-filter=ACM $against)
EOD