我准备了以下pre-commit
钩子:
#!/bin/sh
# Run flake8 and mypy
flake8 ./src
FLAKE8_EXIT_CODE=$?
mypy ./src
MYPY_EXIT_CODE=$?
# If either flake8 or mypy return an error, skip black and the commit process
if [ $FLAKE8_EXIT_CODE -ne 0 ] || [ $MYPY_EXIT_CODE -ne 0 ]; then
echo "flake8 or mypy checks failed. Skipping black and commit."
exit 1
fi
black .
git add -u
if ! git diff-index --quiet HEAD; then
git commit --no-verify -m "Same message all the times!"
fi
请注意black .
重新格式化文件,因此我有第二个git add -u
。为了避免无限递归,我添加了最后一个检查git commit with --no-verify
,但提交消息对于每个提交都是相同的,我想避免这种情况。相反,我希望在进入最后一个if
分支时提示提交消息。我尝试在最后一个分支中使用read
命令if
,但没有成功。我也想避免使用外部工具作为预提交,但如果可能的话,我宁愿使用本机解决方案。
如何修复?