2013-01-04 9 views

Odpowiedz

8

Jest haczyk pre-commit-msg lub commit-msg, że można użyć:

Git repo pochodzą z hakami próbce, na przykład próbka commit-msg przechwytuje pod numerem git/hooks/commit-msg.sample przechwytuje zduplikowane linie Sign-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 
} 

Aby włączyć hak, nie zapomnij o wykonaniu go.


Oto niektóre fikcyjny przykład, który akceptuje tylko popełnić przesłania london|120|something ... i podobne:

#!/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 

W użycia:

$ 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

Uwaga: ten rodzaj ograniczenia jest częścią gitolite (), który pozwala na różnego rodzaju kontrole podczas przeprowadzania repozytorium)

Jeden przykład można zobaczyć na "git gitolite (v3) pre-receive hook for all commit messages".

Pomysł z gitolite polega na tym, że można łatwo wdrożyć ten hak w określonych repozytoriach dla określonych grup użytkowników.

Powiązane problemy