3

我想使用 git 挂钩强制提交消息符合特定格式(它们应该以#number 结尾)。我试过安装这个钩子,也在这里引用,但我不断收到消息:

$ 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

有什么问题?

4

1 回答 1

4

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

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

:set ff=unix
:w
于 2011-11-29T04:18:55.547 回答