Git commit mesajlarını otomatikleştirme yöntemi
(insight.infograb.net)*git commit mesajı yazarken zorlandığınız anlar
- Emoji kullanıp issue numarası da eklenen commit mesajları takip etmeyi kolaylaştırır ve daha düzenli görünür
- Ancak commit mesajı uzayıp karmaşıklaştıkça bunu her seferinde yazmak zahmetli olur ve hata yapma olasılığı artar
- Her seferinde uygun emojiyi bulmak da yorucudur
*Git Hooks ile git commit mesajlarını zorunlu kılmak
- Git Hooks, Git ile ilgili bir olay gerçekleştiğinde bizim belirlediğimiz script'i çalıştıran bir özelliktir
- Bu özellik server hook ve client hook olarak ikiye ayrılır
*Server hook: Git'in push rule özelliğini kullanmak
pre-receivehook'una commit mesajını denetleyen bir script eklenirse, kurala uymayan commit'lerin server'a push edilmesi engellenir- GitLab'da push rule özelliği kullanılarak commit mesajları düzenli ifadelerle denetlenebilir
- Düzenli ifadeye uymayan commit mesajı tespit edilirse ilgili push reddedilir ve hata oluşturulur
*Client hook: Push etmeden önce önceden denetlemek
- Commit'i tamamen tamamlamadan önce çalışan
commit-msghook'unda bir script oluşturarak commit mesajı denetlenebilir - Commit mesajını değiştirmek istenirse ilgili script
prepare-commit-msghook'una yazılabilir
*Infograb'ın commit mesajı otomatikleştirme yöntemi
- Husky ve Commitlint kullanılarak commit mesajları için bir otomasyon sistemi kuruldu
- Husky, Git Hooks yönetimini kolaylaştıran bir npm modülüdür.
.huskydizini altında script içeren hook dosyaları oluşturulur. Ardındannpx husky installkomutu girildiğinde ilgili script Git'e kaydedilir - commitlint, commit convention'larını kolayca yönetmeye ve commit mesajlarını denetlemeye yarayan bir araçtır. Takımın belirlediği commit convention'ı JSON biçiminde yazılır. Sonrasında
commitlintkomutuyla mesaj denetlenir
1)Commit convention'ını commitlint biçiminde tanımlamak
- Commit mesajının temel şablonuna göre
commitlint.config.tsdosyasında her takıma uygun özellikler tanımlanır
2)Husky'ye commitlint eklemek
commit-msghook'unacommitlintkomutu eklenir. Script.husky/commit-msgdosyasına yazılır
3)Otomasyon eklemek
- Emoji ekleme veya issue numarası yerleştirme gibi işler otomatikleştirilebilir
- Infograb Product Team'de yalnızca type (
feat,fix) girildiğinde emojinin otomatik eklenmesi, type'ın ilk harfinin otomatik olarak büyük yapılması ve branch'te issue numarası varsa footer'a issue numarasının otomatik eklenmesi ayarlanmış durumda - Otomasyon script'i
prepare-commit-msghook'una eklenebilir
2 yorum
commitizen ile birlikte kullanmak da iyi olur
Harika araç, teşekkürler.