使用hook强制执行git commit消息的特定格式

时间:2011-11-29 03:51:16

标签: git pre-commit-hook

我想使用git钩子强制提交消息以符合特定格式(它们应以#number结尾)。我已尝试安装this hook,也引用here,但我不断收到消息:

$ git commit -am "Test"
.git/hooks/commit-msg: line 1: sage_file: command not found
.git/hooks/commit-msg: line 2: syntax error near unexpected token `('
.git/hooks/commit-msg: line 2: `message = File.read(message_file)'

我正在使用与示例中显示的完全相同的脚本,并且两者都给出了相同的错误。我曾尝试过:

#!/usr/bin/env ruby
message_file = ARGV[0]
message = File.read(message_file)

#starts with # then number, space, and at least 5 words no more than 200
$regex = /(^#[0-9]+ \W*(\w+(\W+|$)){5,200})/

if !$regex.match(message)
puts "Your message is not formatted correctly (example: #XXX at least 5 words)"
exit 1
end

可能出现什么问题?

1 个答案:

答案 0 :(得分:4)

有可能(a)您在Windows上执行此操作,以及(b)您不小心将Windows CRLF行结尾引入了您的脚本。 Shell脚本不喜欢这些,并且可能导致您观察到的那种问题。

要将Vim设置为编写Unix风格的LF行结尾,请使用

:set ff=unix
:w