Git, yazılım geliştiricilerinin hayatını kolaylaştıran güçlü bir araçtır. Ancak her zaman daha fazlası vardır! Git Hooks, yazılımcıların projelerine ekstra işlevsellik ve otomasyon katmalarını sağlayan harika bir özelliktir. Peki, Git Hooks nedir ve nasıl kullanılır? Hadi, gitmeye hazır mısınız?
Git Hooks’a Giriş: Bir Nedir Bu Hooks?
Git, kodunuzu versiyonlamak için harika bir araç olabilir, ancak bazen bir şeylerin otomatik olarak yapılmasını istemek, size zaman kazandırabilir. Git Hooks, tam da burada devreye girer! Git, belirli bir işlem gerçekleştiğinde tetiklenen bir dizi “hook” (kanca) sunar. Bu, bir commit yapmadan önce veya bir push işleminden önce çalıştırılacak betikler (scriptler) yazmanıza olanak tanır.
Git Hooks Nasıl Çalışır?
Git Hooks, Git deposundaki `.git/hooks` dizininde yer alır. Bu dizin içinde her biri belirli bir Git komutuyla tetiklenen, adlandırılmış bir dizi dosya bulursunuz. Örneğin, commit yapmak istediğinizde çalışacak bir hook dosyası, `pre-commit` olarak adlandırılmıştır.
Bu dosyaların her biri, tetiklendiğinde çalışacak bir shell script’i içerir. Yazdığınız bu script’ler, Git işlemi gerçekleşmeden önce veya sonra belirli işlemleri yapmanıza olanak tanır.
Git Hooks Kullanım Örnekleri
Şimdi, Git Hooks’un hayatınızı nasıl kolaylaştırabileceğini daha iyi anlayabilmek için birkaç örnek üzerinden gidelim.
# 1. Pre-Commit Hook ile Kod Kalitesini Artırın
Bazen, kodu commit etmeden önce belirli kurallara uymasını isteyebilirsiniz. Örneğin, bir kod formatlama aracı çalıştırmak veya belirli testlerin geçip geçmediğini kontrol etmek isteyebilirsiniz. Bunun için `pre-commit` hook kullanabilirsiniz. İşte nasıl yapılacağı:
İlk adım olarak, `.git/hooks` dizinindeki `pre-commit.sample` dosyasını `pre-commit` olarak yeniden adlandırın. Sonrasında, dosyaya aşağıdaki gibi bir kod ekleyin:
#!/bin/sh
# Kod formatını kontrol et
npm run lint
if [ $? -ne 0 ]; then
echo "Kod formatı hatası bulunuyor. Lütfen düzeltin."
exit 1
fi
Bu script, commit işleminden önce `npm run lint` komutunu çalıştıracak ve format hatası varsa commit yapılmasını engelleyecektir.
# 2. Pre-Push Hook ile Testleri Çalıştırın
Her commit yapıldığında testlerinizi çalıştırmak çok zaman alabilir. Ancak her push öncesinde testlerinizi çalıştırarak, uzak depoya yalnızca testleri geçmiş kodu gönderebilirsiniz. İşte `pre-push` hook kullanarak bunu yapabilirsiniz:
#!/bin/sh
# Testleri çalıştır
npm run test
if [ $? -ne 0 ]; then
echo "Testler başarısız oldu. Push işlemi iptal ediliyor."
exit 1
fi
Bu script, push işlemi öncesinde testlerin geçip geçmediğini kontrol eder. Eğer testler başarısız olursa, push işlemine izin verilmez.
# 3. Commit Mesajlarını Standartlaştırma
Bazı projelerde, commit mesajları belirli bir formata uymalıdır. Örneğin, her commit mesajının başında bir “tip” (feat, fix, docs, vb.) olmalı. `commit-msg` hook’unu kullanarak bu kurallara uyulup uyulmadığını kontrol edebilirsiniz. İşte nasıl:
#!/bin/sh
# Commit mesajını kontrol et
commit_msg=$(cat $1)
if [[ ! "$commit_msg" =~ ^(feat|fix|docs): ]]; then
echo "Commit mesajı geçersiz! Mesaj şu formatta olmalı: feat: Yeni özellik ekle"
exit 1
fi
Bu script, commit mesajlarının `feat`, `fix` veya `docs` ile başlamasını zorunlu kılar. Eğer format doğru değilse, commit işlemi iptal edilir.
Git Hooks Kullanırken Dikkat Edilmesi Gerekenler
Git Hooks güçlü bir araçtır ancak dikkat edilmesi gereken birkaç şey vardır. İlk olarak, `.git/hooks` dizinindeki dosyalar genellikle sürüm kontrolüne dahil edilmez. Yani, bir başkasıyla çalışıyorsanız, bu hook’ların projede ortak şekilde kullanılabilmesi için, hook betiklerini projeye dahil etmek için farklı bir yol (örneğin bir `hooks` klasörü) kullanmanız gerekebilir.
Ayrıca, her hook dosyasının doğru şekilde çalışabilmesi için uygun izinlere sahip olması gerektiğini unutmayın. `chmod +x .git/hooks/pre-commit` gibi komutlarla dosyaları çalıştırılabilir hale getirebilirsiniz.
Git Hooks’un Gücü
Git Hooks, küçük bir başlangıçtır ancak büyük bir fark yaratabilir. Kod kalitesini arttırabilir, testleri her adımda çalıştırabilir ve ekip içindeki iş akışını çok daha verimli hale getirebilirsiniz. Birçok yazılımcı Git’in sunduğu bu güçlü araçları yeterince kullanmıyor, fakat bir kez kullanmaya başladığınızda vazgeçmek zorlaşır. Git Hooks ile, yazılım geliştirme sürecinizi daha da pürüzsüz hale getirebilirsiniz.
Başka bir deyişle: Git Hooks, yazılım geliştirmede otomasyonu sağlamak için mükemmel bir araçtır. Bu araçları etkili bir şekilde kullanarak, kodunuzun kalitesini artırabilir, daha temiz ve hatasız bir yazılım geliştirme süreci oluşturabilirsiniz.