我知道我可以使用 commit-msg 钩子(Hook)来检查消息(我做到了)但我希望在使用不同的标准推送之前再次检查消息。
.git/hooks下给出的例子是用shell脚本写的,但是我想写一个python脚本我想到的字符串操作比较复杂。
我知道我可以将第一行更改为 #!/usr/bin/env python
。我的问题是,我不知道如何获取最新提交的消息字符串。我尝试了 git rev-list
(在该示例的第 44 行),但它没有给我消息字符串,它需要提交哈希 ID。请注意,消息字符串可能是多行的(因为第一行被限制为最多 50 个字符)。
EIDT:其他题都是问如何用Python写pre-push脚本,但是没有涉及到消息串的检查。
最佳答案
pre-push hook传递了本地/远程引用和提交 ID (sha1) 的列表,因此您必须逐行读取它们,拆分并获取本地提交 ID。 See如何在 shell 脚本中完成。
有了提交 ID,您可以使用命令提取完整的提交消息
git show --format='%B' -s $SHA1
在 Python 中是这样的:
for line in sys.stdin:
local_ref, local_sha1, remote_ref, remote_sha1 = line.strip().split()
message = subprocess.check_output(
['git', 'show', '--format=%B', '-s', local_sha1])
if not check(message):
sys.exit(1)
关于python - 如何编写 python 预推送来检查提交消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50070157/