很多朋友并不知道git hooks这个功能吧。
hooks 翻译过来就是钩子的意思, 我的翻译就是trigger ,引发的意思。
简单的说就是做一件事情,引发了另一件事情。
那么git 有哪些hooks 了,
有pre-commit 就是在你commit之前,引发了某件事情。
有post-commit 就是在你commit 之后,引发某件事情。
有post-update, 就是在你git push 到服务器后,引发某件事情。
还有很多, 自己上网查查
下面就让我介绍几个最简单的应用吧。
1. 每次commit之后,就自动运行jenkins去检查Unit test
.git/hooks/post-commit に
wget -O /dev/null "http://hostname:8080/job/jobname/build?delay=3sec"
chmod
+x post-commit
2. commit 之前检查文件中是否有debugger 字符
.git/hooks/pre-commit に
#!/usr/bin/env ruby
# check for debugger
result = `grep -rlsn "binding.pry" --exclude-dir=".git" .`
if result != ""
puts "[Error] you put binding.pry in your files\n"
puts result
exit(1)
end
chmod
+x pre-commit
3. commit中检查你的commit 是否符合格式
#!/usr/bin/env ruby
# check for messager format
# the best way looks like:
# GI-123 GI-234 GI-345 #resolve #time 2d 5h #comment Task completed ahead of schedule
message_file = ARGV[0]
message = File.read(message_file)
$regex = /^GI-(\d+)/
if !$regex.match(message)
puts "[POLICY] Your message is not formatted correctly"
exit 1
end
chmod
+x commit-msg