gpt4 book ai didi

git - 如何使用 husky 检查 git commit 消息格式?

转载 作者:太空狗 更新时间:2023-10-29 13:20:38 24 4
gpt4 key购买 nike

我正在尝试执行 git 提交消息策略以保持我的存储库干净整洁。我看过有关服务器端和客户端 Hook 的官方文档,然后我碰到了 husky .

到目前为止,我可以使用第一个但不能设置 husky,我还有很多东西要学。主要思想是能够在新工作站上工作,而无需手动设置任何客户端 Hook 。

有人可以解释一下我如何设置 husky 来检查我的提交消息,甚至举个例子吗?

这是我在 project-root/githooks 文件夹中的 commit-msg Hook :

#!/usr/bin/env ruby

message_file = ARGV[0]
message = File.read(message_file)

$regex = /([resolved|fixed]) #([0-9])* ([A-Z])\w+/

if !$regex.match(message)
puts "[POLICY] Your message is not formatted correctly!"
puts "Message format must be like:"
puts "resolved #123 Case title (for features)"
puts "fixed #123 Case title (for bugs)"
puts "First letter of 'Case title' must be capitalized!"
exit 1
end

我已经尝试将脚本添加到 package.json 中:

"scripts": {  
... : ...,
"commitmsg": "sh hooks/commit-msg",
... : ...
}

Hook 不起作用。所有消息通过。如果放入 .git/hooks 它会正常工作。

package.json and commit-msg hook in a test project

这是一个测试项目的屏幕截图,其中包含 package.json、commit-msg Hook 和它给出的错误。

相同的钩子(Hook),放在 .git/hooks 文件夹中,工作正常。

最佳答案

对于 Husky 7+,您可以将以下内容添加到 .husky/commit-msg 文件中:

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

message="$(cat $1)"
requiredPattern="^(add|cut|fix|bump|make|start|stop|refactor|reformat|optimise|document|merge) .*$"
if ! [[ $message =~ $requiredPattern ]];
then
echo "-"
echo "-"
echo "-"
echo "🚨 Wrong commit message! 😕"
echo "The commit message must have this format:"
echo "<verb in imperative mood> <what was done>"
echo "Allowed verbs in imperative mood: add, cut, fix, bump, make, start, stop, refactor, reformat, optimise, document, merge"
echo "Example: add login button"
echo "-"
echo "Your commit message was:"
echo $message
echo "-"
echo "For more information, check script in .husky/commit-msg"
echo "-"
exit 1
fi

关于git - 如何使用 husky 检查 git commit 消息格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41785974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com