Jestem nowy dla git i chcę móc przechwycić komunikat zatwierdzenia po naciśnięciu do origin/master i uruchomić skrypt bash (na serwerze) na czym zawiera ciąg.Jak przechwycić wiadomość zatwierdzenia git i uruchomić akcję
Na przykład, jeśli mój git commit wiadomość mówi: [email] my commit message
Jeśli wiadomość zawiera [email]
popełnić następnie wykonać określone działanie, w przeciwnym razie, nie rób tego.
Oto przykładowy skrypt bash Mam na myśli używając w haku post-receive
:
#!/bin/bash
MESSAGE= #commit message variable?
if [[ "$MESSAGE" == *[email]* ]]; then
echo "do action here"
else
echo "do nothing"
fi
W zasadzie wszystko, co musisz wiedzieć, co zmienna nazwa komunikatu zatwierdzenia jest, aby korzystać w powyższym bash scenariusz? Ponadto, nie jestem pewien, czy jest to odpowiedni hak do tego, czy nie.
Więc ten znacznik "[email]" będzie trwale częścią wiadomości o zatwierdzeniu? – Cascabel
Inne możliwe metody: użyj zmiennej środowiskowej, aby zasygnalizować hakowi, więc nie ma nic w wiadomości o zatwierdzeniu. Użyj aliasu, aby to ułatwić. Lub, jeśli chcesz zapisać go w wiadomości, wykryj znaczniki w haczyku przed zatwierdzeniem, aby móc zmodyfikować wiadomość przed zarejestrowaniem zatwierdzenia. (Przyjmij, że zatwierdzenie się powiedzie i od razu wyślesz e-mailem, lub zapiszesz coś dla haka po zatwierdzeniu, aby wprowadzić klucz ...) – Cascabel
Czy naprawdę robisz to po otrzymaniu, a nie po zatwierdzeniu? Wtedy oczywiście nie można już modyfikować komunikatu zatwierdzenia. Oznacza to jednak, że twoje rozwiązanie nie działa: naciśnięcie nie przesuwa tylko jednego zatwierdzenia, aktualizuje dowolną liczbę odwołań, z których każda może zawierać dowolną liczbę nowych zatwierdzeń. Powinieneś naprawdę spojrzeć na [przykład] (http://git.kernel.org/?p=git/git.git;a=blob;f=contrib/hooks/post-receive-email;hb=HEAD) w git's contrib. Zajmuje sporo czasu i możesz go zmodyfikować, aby zwracał uwagę tylko na zatwierdzenia, które mówią "[email]". – Cascabel