我正在使用一个 node.js 项目,我需要使用各种应用程序(例如 github、sourcetree 等)来 check out git 源代码。是否可以自定义验证 git 提交消息并在提交更改时在所有应用程序中显示错误消息?
我知道 git 中有一个 git hook 'commit-msg' 可用,但我不知道如何使用它。
最佳答案
这是一个示例。
#!/bin/sh
path=$1
echo path is $path
a=$(cat $path)
echo commit message is
echo $a
if [[ "$a" =~ "hello world" ]];then
echo commit format test passed
exit 0
else
echo commit format test failed
exit 1
fi
将其保存为名为 commit-msg
的文件并使其可执行并将其放入 .git/hooks/中。
此示例检查提交消息是否包含“hello world”的子字符串。如果是,提交将成功。否则,提交将失败。
这是一个python版本
#!/usr/bin/python
import sys
path = sys.argv[1]
print "path is " + path
with open(path) as f:
lines = f.read()
print "commit message is"
print lines
if "hello world" in lines:
print "format test passed"
exit(0)
else:
print "format test failed"
exit(1)
您可以根据您的逻辑改进此 Hook 。您可以检查 .git/hooks/是否有 commit-msg.sample
。如果是这样,您可以阅读它作为引用。你可以 cp .git/hooks/commit-msg.smaple .git/hooks/commit-msg
然后编辑它。
此外,如果你想将这个钩子(Hook)部署到每个仓库中,如果你使用的是 Ubuntu,你可以将这个钩子(Hook)复制到/usr/share/git-core/templates/hooks 中。我不知道其他系统中的默认模板路径是什么。您可能需要检查一下。这样做之后,当你 git clone
时,这个钩子(Hook)将被复制到 .git/hook/中。至于已经存在的repos,你可以运行git init
来复制hook。
还有一件事,如果你不想让钩子(Hook)运行,你可以在 时添加选项
,如果它存在,它也会绕过钩子(Hook) --no-verify
或者只是 -n
git commitpre-commit
。
关于git - 如何验证和显示 git 提交消息的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37699261/