Skip to content

Global ve modüler commit hook sistemi. Tüm projelerde commit mesajlarını standart JIRA formatına göre kontrol eder, kullanıcı müdahalesi gerektirmez ve lokal git hooklarını merkezi bir dosyada yönetir.

License

Notifications You must be signed in to change notification settings

serdargoleli/commit-sentinel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Global Git Commit Kuralları (Commit Rules)

Bu proje, bilgisayarınızdaki tüm Git projelerinde standart bir commit mesajı formatını zorunlu kılmak için geliştirilmiş, otomatik çalışan bir araçtır.

🎯 Amaç ve Mantık

Normalde Git hook'ları (kancaları) her proje için .git/hooks klasörü altında ayrı ayrı bulunur. Ancak bu yöntemle her yeni projede kuralları tekrar ayarlamanız gerekir.

Bu proje, Git'in Global Hooks Path (core.hooksPath) özelliğini kullanarak, tüm projelerinizin tek bir merkezi yerden yönetilen kurallara uymasını sağlar.

Mantık şöyledir:

  1. start.sh scripti çalıştırıldığında, ev dizininizde (~/.git-hooks) bir klasör oluşturur.
  2. Kural dosyasını (commit-rule.sh) bu klasöre commit-msg adıyla kopyalar.
  3. Git'in global ayarlarını değiştirerek, tüm projelerin hook dosyaları için bu klasöre bakmasını sağlar.

Böylece, hangi projede olursanız olun, commit attığınızda bu script devreye girer ve mesajınızı kontrol eder.


📦 Kurulum ve Kullanım

Kurulum oldukça basittir. Terminali açın ve projenin bulunduğu dizinde şu komutu çalıştırın:

./start.sh

Bu işlem şunları yapar:

  • ~/.git-hooks klasörünü oluşturur.
  • Hook dosyasını oraya kopyalar.
  • git config --global core.hooksPath ~/.git-hooks komutunu çalıştırarak ayarı aktif eder.

Artık herhangi bir projenizde commit atarken kurallar otomatik olarak kontrol edilecektir.

Örnek Geçerli Commit:

git commit -m "feat(AUTH-123): login sayfasi tasarimi eklendi"

⚙️ Özelleştirme (Customize)

Kuralları değiştirmek isterseniz (örneğin JIRA ID zorunluluğunu kaldırmak veya yeni tipler eklemek isterseniz):

  1. Bu projedeki commit-rule.sh dosyasını açın.
  2. PATTERN değişkenini veya if koşullarını ihtiyacınıza göre düzenleyin.
  3. Değişiklikleri yaptıktan sonra tekrar ./start.sh komutunu çalıştırarak güncel dosyayı global klasöre kopyalayın.

⚠️ Önemli: Çakışmalar ve Hook Yönetimi

Bu yapı Global bir ayar olduğu için, bazen özel durumlarla karşılaşabilirsiniz. İşte bunları nasıl yöneteceğiniz:

1. Bir Proje Kendi Hook'larını Kullanıyorsa (Global'i Görmüyorsa)

Bazı projeler (örneğin husky kullanan projeler), kendi .git/config dosyalarında core.hooksPath ayarını o projeye özel olarak tanımlamış olabilir. Bu durumda o proje sizin global kurallarınızı GÖRMEZ.

Eğer o projenin de sizin global kurallarınızı kullanmasını istiyorsanız, o proje dizininde şu komutu çalıştırarak yerel ayarı kaldırmalısınız (unset):

# Proje dizininde çalıştırın
git config --unset core.hooksPath

Bu komut, projenin yerel hook yolunu iptal eder ve Git otomatik olarak global ayara (sizin kurallarınıza) bakmaya başlar.

2. Global Kuralları Tamamen İptal Etmek

Eğer artık bu kuralları kullanmak istemiyorsanız ve Git'in varsayılan davranışına (her projenin kendi .git/hooks klasörüne bakması) dönmesini istiyorsanız:

git config --global --unset core.hooksPath

Bu komut global ayarı siler ve her şey normale döner.


📝 Kural Formatı

Varsayılan olarak script şu formatı bekler: Type(TASK-ID): Açıklama

  • Type: feat, fix, hotfix, docs, style, refactor, test, chore
  • TASK-ID: Büyük harf + tire + rakam (Örn: PROJ-123)
  • Açıklama: En az 5 karakter.

About

Global ve modüler commit hook sistemi. Tüm projelerde commit mesajlarını standart JIRA formatına göre kontrol eder, kullanıcı müdahalesi gerektirmez ve lokal git hooklarını merkezi bir dosyada yönetir.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages