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.
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:
start.shscripti çalıştırıldığında, ev dizininizde (~/.git-hooks) bir klasör oluşturur.- Kural dosyasını (
commit-rule.sh) bu klasörecommit-msgadıyla kopyalar. - 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 oldukça basittir. Terminali açın ve projenin bulunduğu dizinde şu komutu çalıştırın:
./start.shBu işlem şunları yapar:
~/.git-hooksklasörünü oluşturur.- Hook dosyasını oraya kopyalar.
git config --global core.hooksPath ~/.git-hookskomutunu ç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"Kuralları değiştirmek isterseniz (örneğin JIRA ID zorunluluğunu kaldırmak veya yeni tipler eklemek isterseniz):
- Bu projedeki
commit-rule.shdosyasını açın. PATTERNdeğişkenini veyaifkoşullarını ihtiyacınıza göre düzenleyin.- Değişiklikleri yaptıktan sonra tekrar
./start.shkomutunu çalıştırarak güncel dosyayı global klasöre kopyalayın.
Bu yapı Global bir ayar olduğu için, bazen özel durumlarla karşılaşabilirsiniz. İşte bunları nasıl yöneteceğiniz:
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.hooksPathBu komut, projenin yerel hook yolunu iptal eder ve Git otomatik olarak global ayara (sizin kurallarınıza) bakmaya başlar.
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.hooksPathBu komut global ayarı siler ve her şey normale döner.
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.