2017-01-22 36 views
1

我试图执行一个git commit消息策略来保持我的仓库干净整洁。我见过关于服务器端和客户端钩子的官方文档,然后我碰到了husky如何使用赫斯基来检查git commit消息格式?

到目前为止,我可以与第一个合作,但不能设置哈士奇,我还有很多东西要学。主要想法是能够在新工作站上工作而无需手动设置任何客户端挂钩。

有人可以解释我如何设置哈士奇来检查我的提交消息,甚至作出例子吗?

这是我在project-root/githooks文件夹承​​诺,味精勾:

#!/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 and commit-msg hook in a test project

这里是用的package.json一个测试项目的一个截图,提交-MSG钩和错误它给了。

相同的钩子,放在.git /钩子文件夹中,工作得很好。

回答

1

issue 81

首先,检查

npm config get ignore-scripts # should be false 

然后在混帐回购协议:

npm install husky --save-dev 

然后,您可以添加挂钩(这里一个pre-commit和前推)到npm(package.json),这个想法是那些钩子定义是在package.json文件中的版本(你的git回购资源的一部分)

https://camo.githubusercontent.com/89b1f62d0f2f8b73cad2c70faec7b45d9957c41f/68747470733a2f2f692e696d6775722e636f6d2f794844734d32522e706e67

还可以声明现有的常规庆典挂钩(issue 92

{ 
    "scripts": { 
    "precommit": "sh scripts/my-specific-hook.sh" 
    } 
} 

然后可以使用validate-commit-msg验证您提交的信息。

"commitmsg": "validate-commit-msg"添加到您的npm脚本中package.json

+0

首先,感谢您的帮助!正如编辑中提到的,我试图配置package.json文件,但它根本不起作用。我也尝试了validate-commit-msg,这也不起作用......到目前为止,我可以运行一个脚本(“postinstall”:“sh hooks/setup_hooks.sh”)来将我的钩子移动到.git /钩子文件夹。 – remmargorp

+0

@remmargorp你在哪个操作系统上工作?用哪个版本的npm? – VonC

+0

我在Ubuntu 16.04和npm是4.0.5版本 – remmargorp

相关问题