Takip et

Git Hooks ile Kod Kalitesini Arttırın

Git Hooks ile Kod Kalitesini Arttırın

Yıllarca yazılım geliştiriyorsunuz, ekip çalışması içinde kod paylaşıyorsunuz ve birden fark ediyorsunuz ki, sürekli olarak bozuk kodlar teslim ediliyor. Testler başarısız, stil kılavuzu uygulanmamış, gereksiz dosyalar commit edilmiş… Bu durum, hem zaman kaybına hem de projenin genel kalitesinin düşmesine neden oluyor. İşte tam burada devreye giriyor: **Git Hooks**. Bu makalede, Git Hooks’ların ne olduğunu, nasıl kullanıldığını ve kod kalitenizi nasıl yükselteceğini adım adım açıklayacağız. Git Hooks ile geliştirme sürecinizi otomatikleştirerek, hataları erken aşamalarda yakalayabilir ve daha temiz, daha güvenilir bir kod tabanı oluşturabilirsiniz. Hazırsanız, başlıyoruz!

Git Hooks Nedir?

Git Hooks, belirli Git olayları tetiklendiğinde otomatik olarak çalıştırılan küçük komut dosyalarıdır. Bu olaylar, bir commit öncesi veya sonrası, push öncesi veya sonrası gibi çeşitli aşamalarda gerçekleşir. Örneğin, bir geliştirici git commit komutunu çalıştırdığında, önceden tanımlanmış bir hook çalıştırılarak kodun stil kontrolünden geçmesi, test edilmesi veya diğer otomasyon işlemlerinin gerçekleştirilmesi sağlanabilir. Bu sayede, hatalı kodun kod tabanına girmesi önlenir ve projenin genel kalitesi korunur.

Basitçe söylemek gerekirse, Git Hooks, geliştirme sürecinize eklediğiniz küçük ama güçlü birer güvenlik ağıdır. Daha fazla bilgi için [bu rehberi](https://fatihsoysal.com) inceleyebilirsiniz.

Hangi Git Hooks’ları Kullanmalıyım?

Git, çok sayıda hook sunar, ancak en yaygın kullanılanları şunlardır:

  • pre-commit: Commit işlemi *öncesinde* çalışır. Kodun stil kontrolü, test edilmesi gibi işlemler için idealdir. Bu hook, hatalı kodun commit edilmesini engellemek için kullanılır.
  • pre-push: Push işlemi *öncesinde* çalışır. Sunucuya gönderilecek kodu son bir kez kontrol etmek için idealdir.
  • post-commit: Commit işlemi *sonrasında* çalışır. Loglama, yedekleme gibi işlemler için kullanılabilir.
  • pre-receive: Sunucu tarafında, push işlemi *öncesinde* çalışır. Sunucu üzerindeki kodun bütünlüğünü korumak için kullanılabilir.

Bu listedeki hook’lar, en yaygın kullanılanlardır; ancak ihtiyaçlarınıza göre diğer hook’ları da kullanabilirsiniz. Örneğin, yeni bir dosya eklendiğinde otomatik olarak bir doküman oluşturmak için bir hook yazabilirsiniz.

Pre-commit Hook’unu Nasıl Kurarım?

Şimdi, en yaygın hook olan pre-commit‘i nasıl kuracağımızı adım adım inceleyelim. Bu örnekte, kodun stilini kontrol etmek için ESLint kullanacağız. Öncelikle, projenize ESLint kurmanız gerekiyor:


npm install --save-dev eslint

Ardından, .eslintrc.js dosyasını oluşturup ESLint kurallarınızı tanımlayın. Örnek bir .eslintrc.js dosyası şu şekilde olabilir:

javascript
module.exports = {
“env”: {
“browser”: true,
“es2021”: true
},
“extends”: [
“eslint:recommended”,
“plugin:react/recommended”
],
“parserOptions”: {
“ecmaFeatures”: {
“jsx”: true
},
“ecmaVersion”: “latest”,
“sourceType”: “module”
},
“plugins”: [
“react”
],
“rules”: {
}
};

Sonrasında, .git/hooks dizininin içine pre-commit adında bir dosya oluşturun ve aşağıdaki kodu yapıştırın:

bash
#!/bin/sh
npm run lint && git add . || exit 1

Bu kod, npm run lint komutunu çalıştırarak ESLint’i çalıştırır. Eğer lint hataları varsa, komut başarısız olur ve exit 1 komutu sayesinde commit işlemi iptal edilir. Dosyaya çalıştırma izni vermelisiniz:


chmod +x .git/hooks/pre-commit

Artık, her commit işlemi öncesinde ESLint çalışacak ve hatalı kodun commit edilmesini engelleyecektir. Bu sayede, kod kalitenizi sürekli olarak yüksek tutmayı sağlayabilirsiniz.

Pre-push Hook’unu Nasıl Kurarım?

Pre-push hook’u ise, kod sunucuya gönderilmeden önce son kontrolleri yapmak için kullanılır. Örneğin, tüm testlerin geçerli olduğundan emin olmak isteyebilirsiniz. Bu hook’u kurmak için, .git/hooks dizinine pre-push adlı bir dosya oluşturun ve aşağıdaki kodu ekleyin:

bash
#!/bin/sh
npm test && exit 0 || exit 1

Bu kod, npm test komutunu çalıştırarak testleri çalıştırır. Eğer testler başarısız olursa, exit 1 komutu sayesinde push işlemi iptal edilir. Yine, dosyaya çalıştırma izni vermelisiniz:


chmod +x .git/hooks/pre-push

Bu şekilde, kodunuzu push etmeden önce tüm testlerin başarıyla tamamlanmasını sağlayabilirsiniz. Bu, hatalı kodun sunucuya gönderilmesini engellemek için oldukça önemlidir. Sonuç olarak, daha istikrarlı bir kod tabanına sahip olursunuz. Daha güvenli bir geliştirme süreci için, [bu rehberi](https://fatihsoysal.com) inceleyebilirsiniz.

İleri Düzey Git Hooks Kullanımı

Git Hooks’lar, sadece basit komut dosyalarından çok daha fazlasını yapabilir. Örneğin, daha karmaşık işlemleri gerçekleştirmek için shell komutlarını, Python, Node.js gibi programlama dillerini kullanabilirsiniz. Ayrıca, hook’larınızı daha modüler ve yönetilebilir hale getirmek için ayrı fonksiyonlar ve modüller oluşturabilirsiniz. Karmaşık projelere ait hook’ların yönetimi için, başka bir Git repository veya bir monorepo kullanımı oldukça faydalıdır.

Örneğin, bir pre-commit hook’unda, kod stil kontrolü ve testlerin yanı sıra, kodunuzda güvenlik açığı taraması yapabilir, kod kalitesi analizleri çalıştırabilir ya da belirli bir formatta commit mesajı yazılmasını zorunlu kılabilirsiniz. Bu sayede, projenizin kalitesini önemli ölçüde iyileştirebilirsiniz. Kendi özel hook’larınızı oluşturarak iş akışınızı daha da özelleştirebilirsiniz.

Sonuç

Git Hooks, yazılım geliştirme sürecinizin olmazsa olmaz bir parçasıdır. Özellikle ekip çalışması yapılan projelerde, kod kalitesini korumak ve hataları erken aşamalarda yakalamak için oldukça değerlidir. Bu makalede, en yaygın Git Hooks’ları ve kurulumları hakkında bilgi verdik. Artık, kendi Git Hooks’larınızı oluşturarak, geliştirme sürecinizi otomatikleştirebilir ve daha verimli bir şekilde çalışabilirsiniz. Daha fazla bilgi ve örnek için [bu rehberi](https://fatihsoysal.com) ziyaret edebilirsiniz.

Sıkça Sorulan Sorular

  • Git Hooks’ları tüm ekip üyelerinde mi çalıştırmam gerekiyor? Evet, Git Hooks’lar, projede çalışan tüm geliştiricilerin makinelerinde çalıştırılmalıdır.
  • Git Hooks’ları nasıl güncelleyebilirim? Hook dosyalarını düzenleyip, dosyaya tekrar çalıştırma izni vermeniz (chmod +x) yeterli olacaktır.
  • Herhangi bir Git sürümünde çalışır mı? Genel olarak evet, ancak bazı ileri düzey özellikleri kullanıyorsanız, Git sürümünüzün uyumlu olduğundan emin olun.
  • Hatalı bir hook çalışması projemi bozar mı? Bir hook’un çalışması sırasında hata oluşursa, işlem genellikle iptal edilir. Ancak, çok nadiren, hata nedeniyle beklenmedik sonuçlar oluşabilir. Bu nedenle, hook’larınızı dikkatlice yazmalı ve test etmelisiniz.
  • Hook’lar merkezi olarak yönetilebilir mi? Evet, hook’larınızı bir repository’de yöneterek ve tüm geliştiricilerin bu repository’den hook’ları kopyalamasını sağlayarak merkezi bir yönetim sağlayabilirsiniz. Bu, tüm ekip üyelerinin aynı hook’ları kullanmasını garanti eder.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.