我将检查以确保脚本的每个步骤在失败时都返回非零退出代码。
python3.1 foo.py--test如果测试失败,请检查您是否返回非零退出代码。检查以确保您的
make test命令返回非零退出代码。最后,检查
pre-commit钩子本身在失败时是否返回非零退出代码。
您可以通过添加
|| echo $?到命令末尾来检查非零退出代码。如果命令失败,它将打印出退出代码。
以下示例对我有用(我将stderr重定向
/dev/null以避免在此处包括过多无关的输出):
$ python3.1 test.py 2>/dev/null || echo $?1$ make test 2>/dev/null || echo $?python3.1 test.py2$ .git/hooks/pre-commit 2>/dev/null || echo $?python3.1 test.py1
test.py
:
import unittestclass TestFailure(unittest.TestCase): def testFail(self): assert(False)if __name__ == '__main__': unittest.main()
Makefile
:
test: python3.1 test.py
.git/hooks/pre-commit
:
#!/bin/shmake test || exit 1
注意
|| exit 1。如果
maketest是挂钩中的最后一条命令,则没有必要,因为最后一条命令的退出状态将是脚本的退出状态。但是,如果您以后进行检查
pre-commit,则需要确保退出时出错。否则,在挂接末尾成功执行命令将导致脚本退出,状态为
0。



