Conventional Commits
- Türkçe karşılığı
- commit mesajı kuralı
- Okunuşu
- kınvenşınıl kımits
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Conventional Commits, feat: add search gibi yapılandırılmış commit mesajları için bir şartnamedir; araçlar değişiklik günlüğü üretip sürümü otomatik seçer.
Conventional Commits nedir?
Bir conventional commit mesajı bir tür, isteğe bağlı bir kapsam (scope) ve kısa bir açıklamayla başlar: feat(auth): add passkey login ya da fix: prevent double payment. En yaygın türler yeni özellikler için feat ve hata düzeltmeleri için fix'tir; kullanıcıları doğrudan etkilemeyen değişiklikler için de docs, refactor, test, perf, build, ci ve chore gibi başkaları vardır.
Kırıcı değişiklikler türden sonra bir ünlem işaretiyle, feat!: drop support for Node 18 örneğindeki gibi, ya da bir BREAKING CHANGE: alt satırıyla işaretlenir. Her türün bir anlamı olduğu için geçmiş doğrudan anlamsal sürümlemeye karşılık gelir: düzeltmeler bir patch sürümünü, özellikler bir minor sürümü, kırıcı değişiklikler de bir major sürümü tetikler.
2019'da yayımlanan 1.0.0 sürümlü şartname, Angular projesinin commit yönergelerinden doğdu. Araçlar onun üzerine kurulur: commitlint mesajları bir Git hook'unda ya da CI'da kontrol eder; semantic-release ya da release-please de geçmişi okuyarak sürümleri yükseltir, değişiklik günlüğünü yazar ve sürümleri elle iş yapmadan yayımlar.
Sık yapılan bir yanlış, bu kuralın yalnızca bürokrasi olduğunu düşünmektir. Tutarlı bir biçim geçmişi taramayı ve aramayı kolaylaştırır, ama en iyi commit'ler küçük ve odaklı olduğunda işe yarar. Bir özelliği, bir düzeltmeyi ve bir refactoring'i karıştıran tek bir commit dürüstçe tek bir türle etiketlenemez.
Önemli noktalar
- Conventional Commits, yapılandırılmış bir commit mesajı biçimi tanımlar.
- Mesajlar tür(kapsam): açıklama biçimindedir, feat: ya da fix: gibi.
- Bir ! ya da bir BREAKING CHANGE alt satırı kırıcı değişiklikleri işaretler.
- Türler anlamsal sürümlemeye karşılık gelir: fix patch, feat minor, kırıcı değişiklik major'dır.
- commitlint ve semantic-release gibi araçlar kontrolleri ve sürümleri otomatikleştirir.
Örnek
feat(search): add fuzzy matching for typos
fix(cart): prevent negative totals with stacked coupons
docs: explain how to run the e2e tests
refactor(api): extract pagination helper
perf(images): serve AVIF when the browser supports it
feat(auth)!: require passkeys for admin accounts
BREAKING CHANGE: password-only login is no longer accepted for admins.Sık sorulan sorular
Conventional Commits türleri nelerdir?
Şartname feat ve fix'i zorunlu tutar. Angular kuralından alınan yaygın ek türler docs, style, refactor, perf, test, build, ci, chore ve revert'tür.
Conventional Commits anlamsal sürümlemeyle nasıl ilişkilidir?
Bir fix commit'i bir patch sürümüne, bir feat commit'i bir minor sürüme, kırıcı değişiklik olarak işaretlenmiş her commit de bir major sürüme karşılık gelir; böylece araçlar bir sonraki sürümü geçmişten hesaplayabilir.
Conventional Commits'i nasıl zorunlu kılarım?
Biçime uymayan mesajları reddetmek için commitlint'i, örneğin Husky ile, bir commit-msg Git hook'unda ve CI'da kullanın. Squash merge iş akışlarında bunun yerine pull request başlığı da kontrol edilebilir.
İlgili sayfalar
- CommitSürüm Kontrolü, s. 5Commit, Git'te projenin dosyalarının; benzersiz bir kimlik, yazar, zaman damgası ve değişikliği anlatan bir mesajla kaydedilmiş anlık görüntüsüdür.
- Semantic VersioningSürüm Kontrolü, s. 35Semantic versioning, her bölümün bir sürümün uyumluluğu bozduğunu, özellik eklediğini ya da hata düzelttiğini belirttiği MAJOR.MINOR.PATCH şemasıdır.
- Git HooksSürüm Kontrolü, s. 16Git hook'ları, commit ya da push öncesi gibi anlarda Git'in otomatik çalıştırdığı; kodu denetleyen, kural uygulayan ve işleri otomatikleştiren betiklerdir.
- Squash MergeSürüm Kontrolü, s. 36Squash merge, bir branch'teki tüm commit'leri hedef branch üzerinde tek bir yeni commit'te birleştirir; böylece ana geçmiş kısa ve okunması kolay kalır.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- Code ReviewSürüm Kontrolü, s. 4Code review, kod değişikliklerinin birleştirilmeden önce başka geliştiricilerce incelenmesidir; hataları yakalar, kaliteyi artırır, bilgi paylaşımını sağlar.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin