繁体   English   中英

How to get Python Exit code in a Git Hook on Windows with git for Windows

[英]How to get Python Exit code in a Git Hook on Windows with git for Windows

我将 Python 脚本的调用添加到我的预推送 git 挂钩中,它执行我的单元测试。

如果我不使用 Git LFS,这很好用。 但是,如果我使用 Git LFS,这将不起作用,因为我必须区分我的测试是否失败。 如果它们失败了,我不想推送实际代码,否则我会使用 Git LFS 命令推送它们。

以下钩子是我的起点。 从这一点开始,我想使用 IF 语句来决定是否执行 Git LFS 命令。

#!/bin/sh
python .git/hooks/pre-push.py
command -v git-lfs >/dev/null 2>&1 || { echo >&2 "\nThis repository is configured for Git LFS but 'git-lfs' was not found on your path. If you no longer wish to use Git LFS, remove this hook by deleting .git/hooks/pre-push.\n"; exit 2; }
git lfs pre-push "$@"

下面的代码片段展示了我在测试失败时如何从 Python 退出。

errno = pytest.main(["-v", "-m", "not device_test"])
if(errno == ExitCode.TESTS_FAILED):
    print("Pytests failed!")
    sys.exit(1)

问题是我无法使用 $? (就像在几个地方建议的那样)。

知道如何获得退出代码吗?

当然,解决方法是使用 git 挂钩,Git LFS 未使用该挂钩,例如预提交。 但是,我想在推送之前执行单元测试。

在脚本顶部添加一行,紧跟在 shebang ( #! ) 之后:

set -e

这使得 shell 检查每个命令的退出状态,如果不为零则退出。 因此,如果您的测试失败,则不会执行剩余的命令,也不会推送您的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM