我正在尝试执行git提交消息策略以保持我的存储库干净整洁。我已经看过关于服务器端和客户端钩子的官方文档,然后我碰到了husky。
到目前为止,我可以使用第一个,但无法设置哈士奇,我还有很多东西需要学习。主要思想是能够在新工作站上工作,而无需手动设置任何客户端钩子。
有人可以解释我如何设置哈士奇来检查我的提交消息甚至是一个例子吗?
这是我在project-root/githooks
文件夹中的commit-msg钩子:
#!/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",
... : ...
}
钩子不起作用。所有消息都通过。如果放入.git / hooks它可以正常工作。
这是一个测试项目的截图,其中包含package.json,commit-msg钩子以及它给出的错误。
放在.git / hooks文件夹中的同一个钩子工作得很好。
首先,检查一下
npm config get ignore-scripts # should be false
然后在git repo中:
npm install husky --save-dev
然后你可以在npm(package.json
)中添加钩子(这里是预提交和预推),这个钩子定义的概念就是那个package.json
文件中的版本(git repo源的一部分)
您还可以声明现有的常规bash挂钩(issue 92)
{
"scripts": {
"precommit": "sh scripts/my-specific-hook.sh"
}
}
然后,您可以使用validate-commit-msg
验证您的提交消息。
将
"commitmsg": "validate-commit-msg"
添加到package.json
中的npm脚本中。
像这样:
首先,在您的husky配置中添加验证脚本:
// package.json
{
...
"husky": {
"hooks": {
"pre-commit": "npm test",
// if you use validate-commit-msg, this can be "validate-commit-msg"
+ "commit-msg": "sh scripts/my-specific-hook.sh",
....
}
}
}
然后,试一试......
一切似乎都没问题。