2012-07-03 3 views
0

[BUG33] [리뷰 리더 = ...] ... 과 같은 일부 형식으로 커밋 메시지에 버그 ID를 추가해야하며 모든 커미터가이 수식을 따라야하는 것은 아니며, scm이 커밋 할 때 자유롭게 쓸 수 있음을 의미합니다. 메시지. 커밋 - msg 후크가 그것을 구현하는 데 도움이 될 수 있습니다 검색했습니다. 어느 누구도 나에게 비슷한 훅 예제를 쓸 수있다.git hook을 사용하는 사람들에게 메시지를 커밋하는 방법은 무엇입니까?

답변

0

book progit은 서버 측과 클라이언트 측의 훌륭한 예이다. 당신은 것 커밋 메시지에 해당 링크에서 가져온 적응 a few examples here. 하나의 예를 찾을 수 있습니다

#!/usr/bin/env ruby 

$refname = ARGV[0] 
$oldrev = ARGV[1] 
$newrev = ARGV[2] 
$user = ENV['USER'] 

puts "Enforcing Policies... \n(#{$refname}) (#{$oldrev[0,6]}) (#{$newrev[0,6]})" 
$regex = /\[BUG: (\d+)\]/ 

# enforced custom commit message format 
def check_message_format 
    missed_revs = `git rev-list #{$oldrev}..#{$newrev}`.split("\n") 
    missed_revs.each do |rev| 
    message = `git cat-file commit #{rev} | sed '1,/^$/d'` 
    if !$regex.match(message) 
     puts "[POLICY] Your message is not formatted correctly" 
     exit 1 
    end 
    end 
end 
check_message_format 

이것은 어떤 누구의 메시지 문자열로 포맷되지 않은 커밋 거부해야 "BUG :"뒤에 숫자 (아마도 문제 추적 시스템에서).

+0

안녕하세요 크리스토퍼, 버전 제어에서 클라이언트 측 연결 고리를 만들 수 있습니다 .i는 모든 로컬 저장소에 커밋 - msg 훅 파일을 만들어야한다는 것을 의미합니다. 훅이 버전 control.i에 없으면 ln -s를 사용하려고했습니다. ./../.hooks/commit-msg commit-msg.but failed! – Venus

+0

흠. 나는 몇 분 전에 심볼릭 링크로 전혀 문제가 없었습니다. 올바른 이름/구문을 사용하고 있습니까? 후크를 버전 제어하는 ​​방법에 관해서는 완전히 다른 저장소 (아마도 "후크"또는 "운영 체제"또는 다른 것으로 불리기도 함)를 사용하고 그 중 원하는 것을 연결하는 것이 좋습니다. 그래도 개인적인 취향이야. 나머지 코드를 "메인 저장소"에 넣을 수도 있습니다. – Christopher

관련 문제