pre-commit
- Git kursu
- İleri seviye
- Ders 22/56
- 4 dk
pre-commit hook ile commit öncesi kontrol öğrenirsin.
pre-commit hook nedir?
pre-commit hook, Git bir commit oluşturmadan hemen önce çalışır. Kod biçimi, boşluklar veya temel doğrulamalar gibi kontrolleri bu aşamada yapabilirsin. Hook başarısız bir çıkış koduyla tamamlanırsa Git commit işlemini durdurur.
#!/bin/sh
# Commit öncesi kontrol
if [ -f "ERROR.txt" ]; then
echo "Kontrol başarısız"
exit 1
fiDoğrulama ve çıkış kodu
Bir hook betiği başarı durumunda genellikle 0, hata durumunda ise sıfırdan farklı bir çıkış kodu döndürür. exit 1 komutu kontrolün başarısız olduğunu Git'e bildirir. Böylece örneğin zorunlu bir kontrol geçilmediğinde commit oluşturulmasını engelleyebilirsin.
#!/bin/sh
if [ ! -f "README.md" ]; then
echo "README eksik"
exit 1
fi
exit 0Bu kontrol, README dosyası bulunmadığında commit işlemini durdurur.
Uygulama Commit öncesi dosya kontrolü
Bir pre-commit betiği oluştur. README.md dosyası mevcut değilse hata mesajı yazdır ve exit 1 ile sonlandır. Dosya mevcutsa exit 0 kullan.
Başlangıç kodu
# README dosyasını kontrol et
# Eksikse hata döndür
# Varsa başarılı çıkÖrnek çözüm
if [ ! -f "README.md" ]; then
echo "README.md eksik"
exit 1
fi
exit 0Beklenen çıktı
README.md eksik
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 pre-commit hook hangi aşamada çalışır?
- Uzak depoya push tamamlandıktan sonra
- Depo ilk kez klonlandığında
- Commit oluşturulmadan önce Doğru cevap
- Commit başarıyla oluşturulduktan sonra
Açıklama: pre-commit, commit oluşturma işleminden önce tetiklenir ve başarısız olursa işlemi engelleyebilir.
2 Başarısız kontrolü bildir
#!/bin/sh
____
#!/bin/sh
exit 1
Açıklama: <code>exit 1</code> betiği başarısız çıkış koduyla sonlandırır ve commit işleminin durmasını sağlar.
3 pre-commit bileşenleri
| Kavram | Anlamı |
|---|---|
pre-commit |
Commit öncesi tetiklenir |
exit 0 |
Başarılı çıkış |
exit 1 |
Başarısız çıkış |
README kontrolü |
Zorunlu dosyayı doğrular |