CodeBlanks Logo Icon CodeBlanks

Özet - Hook'lar

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-msg

Uygulama İ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

terminal
# pre-commit betiği

# Başarılı çıkış

# commit-msg betiği

# Mesajı oku

# feat: kontrolü yap

Örnek çözüm

terminal
# pre-commit
pre_commit() {
    exit 0
}

# commit-msg
message=$(cat "$1")
case "$message" in
  feat:*) exit 0 ;;
  *) echo "Geçersiz mesaj"; exit 1 ;;
esac

Beklenen çı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

Soru
pre-commit
commit-msg

____
Cevap
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

İleri seviye bölümündeki tüm dersler