Git Hooks Nedir?
Git Hooks, Git'in çalışma sürecine entegre olabilen özel betiklerdir. Bu betikler, belirli Git komutları çalıştırıldığında otomatik olarak devreye girer. Örneğin, bir commit yaparken bir testin otomatik olarak çalıştırılmasını isteyebilirsiniz. Veya her push işleminden önce bir dosya formatının düzgün olup olmadığını kontrol etmek isteyebilirsiniz. Git Hooks, bu tür görevlerin otomatikleşmesini sağlar ve yazılım geliştirme sürecinizi daha verimli hale getirir.
Git Hooks Kullanımına Giriş
Git Hooks kullanmaya başlamak oldukça basittir. Öncelikle projenizin kök dizininde yer alan `.git` klasörüne gitmeniz gerekiyor. Bu klasörün içinde `hooks` adında bir klasör bulunur. İşte Git Hooks betiklerinizin yer alacağı klasör burasıdır.
Git, varsayılan olarak bu klasörde bir dizi örnek betik sunar. Bu betikler, her biri belirli bir Git komutuyla ilişkilidir. Örneğin, `pre-commit` betiği, her commit yapılmadan önce çalıştırılır. Bu betiklerde yer alan işlevselliği ihtiyacınıza göre değiştirebilirsiniz.
Git Hooks İle Otomatik İşlemler
Git Hooks ile pek çok farklı işlemi otomatikleştirebilirsiniz. İşte bazı örnekler:
1. Commit Öncesi Kod Kontrolü
Bir commit yapmadan önce kodunuzun belirli kurallara uygun olup olmadığını kontrol etmek isteyebilirsiniz. Bu tür bir işlem için `pre-commit` hook’unu kullanabilirsiniz.
Örneğin, JavaScript veya Python kodunuzda stil hatalarını yakalamak için bir araç kullanıyorsanız, bu araçları `pre-commit` hook’unu tetikleyerek çalıştırabilirsiniz.
```bash
#!/bin/sh
# pre-commit hook: kod stilini kontrol et
eslint . || exit 1
```
Yukarıdaki örnekte, bir commit yapılmadan önce `eslint` çalıştırılır ve eğer hata bulunursa commit işlemine izin verilmez.
2. Commit Mesajı Formatı
Commit mesajlarınızın tutarlı olması önemlidir. Özellikle ekip çalışmasında, her commit mesajının belirli bir formatta olması işleri daha düzenli hale getirir. Git, bu tür bir kontrol için `commit-msg` hook’u sunar.
```bash
#!/bin/sh
# commit-msg hook: commit mesajını kontrol et
COMMIT_MSG_FILE=$1
if ! grep -q "^[A-Z]" "$COMMIT_MSG_FILE"; then
echo "Commit mesajı büyük harfle başlamalıdır."
exit 1
fi
```
Bu betik, commit mesajlarının büyük harfle başlamasını zorunlu kılar. Eğer bu kurala uyulmazsa, commit mesajı reddedilir.
3. Push Öncesi Testler
Birçok ekip, kodlarını pushlamadan önce belirli testleri çalıştırmak ister. Bu işlem, hata yapma olasılığını en aza indirir. Git, `pre-push` hook’u sayesinde, her push işleminden önce testlerinizi çalıştırabilir.
```bash
#!/bin/sh
# pre-push hook: testleri çalıştır
npm test || exit 1
```
Yukarıdaki örnekte, push işleminden önce `npm test` komutunun çalıştırılması sağlanır. Eğer testler başarısız olursa, push işlemi gerçekleştirilmez.
Git Hooks ile Verimlilik ve Hata Azaltma
Git Hooks kullanmanın faydaları oldukça büyüktür. Yazılım geliştirme süreçlerinde hata yapma oranını azaltır, tekrar eden işlemleri otomatikleştirir ve genel olarak iş akışınızı hızlandırır. Ancak her şeyin bir dengesi olduğunu unutmamak gerekir. Git Hooks, projelerinizi daha düzenli hale getirirken, karmaşık betiklerle çalışma konusunda dikkatli olmalısınız. Aksi takdirde, hatalı bir hook kodu tüm iş akışınızı bozabilir.
Sonuç
Git Hooks, yazılım geliştirme sürecini kolaylaştıran ve verimliliği artıran güçlü bir araçtır. Basitçe bir hook betiği yazarak, commit, push ve diğer Git işlemlerinizi otomatikleştirebilir, hata oranlarını düşürebilir ve kodunuzu daha temiz tutabilirsiniz. Bu yazının sonunda Git Hooks'un ne kadar güçlü ve kullanışlı bir araç olduğunu keşfetmiş oldunuz. Peki, siz hangi Git Hooks’u kullanıyorsunuz? Hangi işlemleri otomatikleştirdiniz?