2011-11-29 4 views
3

커밋 메시지가 특정 형식 (#number로 끝나야 함)을 따르도록 강요하기 위해 git 후크를 사용하고 싶습니다. 또한 here을 참조, this hook를 설치하려고했지만, 내가 메시지가 계속 :후크를 사용하여 git commit 메시지의 특정 형식을 강제 적용하십시오.

$ 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 

무엇이 잘못 될 수 있습니까?

+0

당신이 사용하고있는 * 실제 * 스크립트의 내용을 게시 할 수 사용, 빔은 유닉스 스타일 LF 라인 엔딩을 작성하는 설정하려면? Pro Git에 게시 된 내용을 변경했는지 여부는 알 수 없습니다. –

+0

(a) Windows에서이 작업을 수행하고 있고, (b) 실수로 스크립트에 Windows CRLF 줄 끝을 도입 한 적이 있습니까? 쉘 스크립트는 그러한 것을 좋아하지 않습니다. 또한 오류 메시지가'sage_file'을 찾을 수 없다고 말하는 것은 의심 스럽지만 여러분의 스크립트는 특별히 그것을 언급하지 않습니다. –

+0

예, 좋은 통찰력! 그것은 Windows가 아니었지만 vim은 어떻게해서 linebreaks를 엉망으로 만들었지 만 다른 편집기를 사용하여 줄 바꿈으로써 해결됩니다. 감사! 이 질문을 답으로 쓸 수 있다면 받아 들일 수 있습니다. –

답변

4

(a) Windows에서이 작업을 수행하고 있고, (b) 실수로 Windows CRLF 행 끝을 스크립트에 도입 한 경우 일 수 있습니다. 쉘 스크립트는 그러한 것을 좋아하지 않으므로 관찰하는 것과 같은 문제를 야기 할 수 있습니다.

:set ff=unix 
:w 
관련 문제