2011-03-22 17 views

Odpowiedz

18

W haku przed zatwierdzeniem wiadomość zatwierdzenia nie została jeszcze utworzona. Prawdopodobnie chcesz zamiast tego użyć jednego z haków prepare-commit-msg lub commit-msg. Jest nice section in Pro Git w kolejności, w której uruchamiane są te zaczepy i co zwykle można z nimi zrobić.

+1

Należy pamiętać, że są to skrypty po stronie klienta, w przypadku skryptów po stronie serwera może być konieczne użycie opcji 'pre-receive'. –

0

Możesz wykonać następujące czynności w haku pre-receive (po stronie serwera), a to wyświetli informację o wersji.

old, new, branch = sys.stdin.read().split() 
proc = subprocess.Popen(["git", "rev-list", "--oneline","--first-parent" , "%s..%s" %(old, new)], stdout=subprocess.PIPE) 
commitMessage=str(proc.stdout.readlines()[0]) 
+4

Wygląda interesująco. Ale bez żadnej informacji o tym, jaki to jest język lub cokolwiek innego, nie jest to zbyt użyteczne. – conradkdotcom

+1

To jest w Pythonie. – ArekBulski

3

Zaimplementowałem to w haku commit-msg. Zobacz documentation.

commit-msg 
This hook is invoked by git commit, and can be bypassed with the --no-verify option. 
It takes a single parameter, the name of the file that holds the proposed commit log message. 
Exiting with a non-zero status causes the git commit to abort. 

Pod my_git_project/.git/hooks dodałem ten plik commit.msg (musi być to nazwa). W tym pliku dodałem następującą zawartość basha, która dokonała sprawdzenia poprawności.

#!/usr/bin/env bash 
INPUT_FILE=$1 
START_LINE=`head -n1 $INPUT_FILE` 
PATTERN="^(MYPROJ)-[[:digit:]]+: " 
if ! [[ "$START_LINE" =~ $PATTERN ]]; then 
    echo "Bad commit message, see example: MYPROJ-123: commit message" 
    exit 1 
fi 
Powiązane problemy