我试图强制执行git commit消息策略,以使我的存储库保持整洁。我看过有关服务器端和客户端挂钩的官方文档,然后碰到了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文件夹中的相同钩子也可以正常工作。
见第81期
首先,检查
npm config get ignore-scripts # should be false
然后在git repo中:
npm install husky --save-dev
然后,您可以在npm(package.json
)中添加钩子(此处是预提交和预推送),其想法是这些钩子定义是该package.json
文件中的版本(您的git repo源代码的一部分)
您还可以声明现有的常规bash钩子(问题92)
{ "scripts": { "precommit": "sh scripts/my-specific-hook.sh" } }
然后,您可以validate-commit-msg
用来验证提交消息。
在中添加
"commitmsg": "validate-commit-msg"
到您的npm脚本中package.json
。