Conventional Commits nedir? Semantic Versioning ve otomatik sürüm/changelog üretimiyle ilişkisi nasıldır?

Cevap

Conventional Commits, commit mesajlarını makinenin okuyabileceği standart bir formatta yazma kuralıdır. Bu sayede commit geçmişinden sürüm numarası ve changelog otomatik üretilebilir.

<tip>(<kapsam>): <kısa açıklama>

feat(auth): Google ile giriş eklendi
fix(cart): indirimli fiyat yuvarlama hatası düzeltildi
docs: README kurulum adımları güncellendi
refactor(api): sipariş servisi sadeleştirildi
feat(api)!: /v1/orders yanıt formatı değişti

BREAKING CHANGE: "total" alanı artık kuruş cinsinden tamsayı

Yaygın tipler: feat, fix, docs, style, refactor, perf, test, build, ci, chore.

Semantic Versioning (SemVer) ilişkisi

SemVer sürümü MAJOR.MINOR.PATCH şeklinde tanımlar:

CommitSürüm etkisiÖrnek
fix:PATCH1.4.2 -> 1.4.3
feat:MINOR1.4.2 -> 1.5.0
! veya BREAKING CHANGE:MAJOR1.4.2 -> 2.0.0

Otomasyon

  • commitlint + Husky commit-msg hook'u ile format kontrolü.
  • semantic-release, release-please veya Changesets ile CI'da otomatik sürüm numarası, Git tag'i, CHANGELOG.md ve GitHub Release oluşturma.
npm install -D @commitlint/cli @commitlint/config-conventional
echo "export default { extends: ['@commitlint/config-conventional'] };" > commitlint.config.js
echo 'npx --no -- commitlint --edit "$1"' > .husky/commit-msg

Squash merge kullanan ekiplerde genelde sadece PR başlığının bu formata uyması yeterlidir, çünkü main dalında PR başlığı commit mesajı olur.

  1. git merge ile git rebase arasındaki fark nedir?OrtaGitFull Stack
  2. git reset ile git revert arasındaki fark nedir?OrtaGitFull Stack
  3. İyi bir code review nasıl yapılır? .gitignore'a neler eklenmelidir?KolayGitFull Stack
  4. Interactive rebase ile commit'leri nasıl düzenler ve squash edersiniz?ZorGitFull Stack
  5. git cherry-pick ve git stash ne işe yarar? Hangi durumlarda kullanılır?OrtaGitFull Stack
  6. Merge conflict nedir ve nasıl çözülür?KolayGitFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle