2013-01-04 30 views

Trả lời

8

Có một pre-commit-msg hoặc commit-msg móc, mà bạn có thể sử dụng:

Git Repos đi kèm với móc mẫu, ví dụ mẫu commit-msg móc dưới git/hooks/commit-msg.sample bắt các dòng Đã ký-off-by.

# This example catches duplicate Signed-off-by lines. 

test "" = "$(grep '^Signed-off-by: ' "$1" | 
    sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 
    echo >&2 Duplicate Signed-off-by lines. 
    exit 1 
} 

Để bật móc, đừng quên làm cho nó hoạt động được.


Dưới đây là một số ví dụ hư cấu, mà sẽ chỉ chấp nhận cam kết thông điệp của các london|120|something ... và những thứ tương tự:

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

# $regex = /\[ref: (\d+)\]/ 

PAIRS = ["london", "paris", "moscow"] # only these names allowed 
STORIES = "\d{2,4}"     # story must be a 2, 3 or 4 digit number 
MESSAGE = ".{5,}"      # message must be at least 5 chars long 

$regex = "((#{PAIRS.join('|')})\|#{STORIES}\|#{MESSAGE})" 

if !$regex.match(message) 
    puts "[POLICY] Your message is not formatted correctly" 
    exit 1 
end 

Trong sử dụng:

$ git ci -m "berlin|120" 
[POLICY] Your message is not formatted correctly 
$ git ci -m "london|120|XX"  
[POLICY] Your message is not formatted correctly 
$ git ci -m "london|120|Looks good."  
[master 853e622] london|120|Looks good. 
1 file changed, 1 insertion(+) 
1

Lưu ý: loại này hạn chế cũng là một phần của gitolite ()cho phép tất cả các loại séc khi đẩy tới repo)

Bạn có thể xem một ví dụ tại "git gitolite (v3) pre-receive hook for all commit messages".

Ý tưởng với gitolite là bạn có thể dễ dàng triển khai móc đó trên các bản ghi cụ thể, cho các nhóm người dùng cụ thể.

Các vấn đề liên quan