Özet - Hook'lar
- Git kursu
- İleri seviye
- Ders 24/56
- 5 dk
hook akışını birleştirerek istemci tarafı denetim kurarsın.
İstemci tarafı hook akışı
Git hook'ları yerel depoda belirli olaylardan önce veya sonra çalışan betiklerdir. pre-commit dosya ve kod kontrollerini commit öncesinde, commit-msg ise commit mesajı doğrulamasını gerçekleştirir. Her iki hook da başarısız çıkış koduyla tamamlanırsa ilgili commit işlemini durdurabilir.
.git/hooks/pre-commit
.git/hooks/commit-msgUygulama İki aşamalı hook denetimi oluştur
İki ayrı Shell betiği tanımla. İlk betik pre-commit görevini temsil etsin ve başarılı çıkış kodu döndürsün. İkinci betik commit-msg görevini temsil etsin ve ilk argümandaki mesaj dosyasını okusun. Mesaj feat: ile başlıyorsa başarılı, değilse hatalı çıkış versin.
Başlangıç kodu
# pre-commit betiği
# Başarılı çıkış
# commit-msg betiği
# Mesajı oku
# feat: kontrolü yapÖrnek çözüm
# pre-commit
pre_commit() {
exit 0
}
# commit-msg
message=$(cat "$1")
case "$message" in
feat:*) exit 0 ;;
*) echo "Geçersiz mesaj"; exit 1 ;;
esacBeklenen çıktı
Geçersiz mesaj
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Commit sürecinde iki hook hangi sırayla çalışır?
- Önce commit-msg, sonra pre-commit
- Önce pre-commit, sonra commit-msg Doğru cevap
- İkisi de yalnızca commit sonrasında
- İkisi de yalnızca push sırasında
Açıklama: pre-commit önce dosya ve kod kontrollerini yapar. Ardından commit-msg oluşturulacak commit mesajını doğrular.
2 İki hook'un görevini tamamla
pre-commit
commit-msg
____
pre-commit
commit-msg
validation
Açıklama: pre-commit ve commit-msg farklı aşamalarda farklı doğrulamalar yapar. Ortak amaçları commit sürecindeki hataları önlemektir.
3 Hook denetim akışı
| Kavram | Anlamı |
|---|---|
pre-commit |
Kod ve dosya kontrolü |
commit-msg |
Mesaj biçimi kontrolü |
exit 0 |
Kontrol başarılı |
exit 1 |
Commit işlemini engeller |