Skip to content

Instantly share code, notes, and snippets.

@Kambaa
Forked from joshbuchea/semantic-commit-messages.md
Last active November 28, 2023 10:52
Show Gist options
  • Save Kambaa/410923120ce4ae673ddd44203847e0ce to your computer and use it in GitHub Desktop.
Save Kambaa/410923120ce4ae673ddd44203847e0ce to your computer and use it in GitHub Desktop.
Semantic Commit Messages

Anlamlı Commit Mesajları

Kodlamalarınızda, iletilen commit'in ne içerdiğinin kısa özetinin sağlanması adına, belirlenmiş bazı kuralları ifade eder. Bu kurallara uyularak hareket edildiğinde, hem yapılan değişikler daha rahat takip edilebilir, hem uygulamada olan değişiklikler (CHANGELOG) daha kolay ayarlanıp proje koduna iliştirilebilinir.

Genel yapı:

Genel olarak commit messajının yapısı şu şekilde ifade edilmektedir:

subject line(konu başlığı - ZORUNLU)
empty line(boş satır - OPSİYONEL)
commit body(commit detayları - OPSİYONEL)
commit footer(alt metin ve imzalar - OPSİYONEL)

Subject Line (Konu Başlığı Satırı):

Yapılan kod değişikliği ile ilgili meta bilgileri içerecek ilk satırdır. Girilmesi zorunludur. Yazılma yapısı şu şekildedir:

type(scope)!: description

Şimdi yukarıda belirtilen tarifi biraz açalım:

  1. type: yapılan kod değişikliğinin genel tipidir. Zorunlu olarak girilmesi beklenmektedir. Popüler olarak aşağıdaki kelimeler kullanılmaktadır:
  • feat: koda eklenen yeni bir özellik(feature, yeni bir endpoint gibi) olduğu zaman kullanılabilir.
  • fix: kodda var olan bir durumun düzeltildiği durumda kullanılabilir.
  • docs: koda eklenen her türlü dökümantasyon, yorumda kullanılabilir.
  • style: kod yazım stili ile ilgili durumda kullanılabilir.
  • refactor: kod üzerinde yapılan değişikliklerde kullanılabilir.
  • test: test ile ilgili(yeni bir unit test gibi) yapılan değişikliklerde kullanılabilir.
  • chore: kod ve proje üzerinde pek etkisi olmayan değişikliklerle ilgili kullanılabilir.
  • ci: CI/CD pipeline'larında otomatikleştirilen kod değişikliklerinin(changelog update, versiyon update gibi) gönderilmesinde kullanılabilir.
  1. scope: sıkça kullanılmasa da, yapılan değişikliğin etki ettiği kapsamla alakalı, genelde tek kelime ile belirtilmektedir. Zorunlu değildir.

  2. !: breaking change indicator denmekte olup, yapılan değişiklikle hali hazırda çalışan kod üzerinde yıkıcı bir değişiklik olacaksa : öncesine eklenebilir. Eğer eklenirse bozulacak yerlerle alakalı ek açılama girilmesi(commit body kısmına) tavsiye edilmektedir. Zorunlu değildir.

  3. description: yapılan kod değişikliğinin kısa açıklamasıdır. Buraya uzun uzadıya metin değil kısaca genel kapsam girilmelidir. Özellikle ingilizce yazılan ifadenin present(geniş zaman) olacak şekilde kısa cümle olarak girilmesi gerekmektedir. 100 karakterden kısa olması beklenmektedir. Zorunludur. Ör:

add hat wobble
^------------^
|
+-> Summary in present tense.

Empty Line And Commit Body:

Subject Line sonrasında boş bir satır bırakılması tavsiye edilmekte, sonrasında yapılan kod değişikliği ile ilgili detayların, olası yıkıcı değişikliklerin(Breaking change indicator olarak verilen) ,ya da çözülen iş numaraları ve bilgileri açıklamalarının girileceği alana commit body denmektedir. Burada girilen mesajın satır karakter sayısının 100 karakterden fazla olmaması istenmektedir.Zorunlu değildir.

Commit Footer:

Girilen kod değişikliği üzerinde kontrol yapılıyorsa, bu kontrolllerle alakalı bilgilerin(yapan kişi, tarih, yorumu gibi) girilebileceği alana denmektedir. Commit body ile arasında bir satır boşluk olması tavsiye edilir. Zorunlu değildir.

Bilinmesi tavsiye edilen diğer kurallar:

  • Subject line'da kurulan cümle sonuna nokta konmamalıdır.
  • Subject line'da büyük harf kullanılmamalıdır. Tüm girdiler küçük harf olmalıdır.
  • Subject line 100 karakteri geçmemelidir.
  • Commit body kısmına girilen hiçbir satır 100 karakteri geçmemelidir

Aşağıda internette kolayca bulunabilen kısa açıklama metnini de okuyabilir, sonraki linklerden ayrıntılı bilgileri edinebilirsiniz.

Original

Semantic Commit Messages

See how a minor change to your commit message style can make you a better programmer.

Format: <type>(<scope>): <subject>

<scope> is optional

Example

feat: add hat wobble
^--^  ^------------^
|     |
|     +-> Summary in present tense.
|
+-------> Type: chore, docs, feat, fix, refactor, style, or test.

More Examples:

  • feat: (new feature for the user, not a new feature for build script)
  • fix: (bug fix for the user, not a fix to a build script)
  • docs: (changes to the documentation)
  • style: (formatting, missing semi colons, etc; no production code change)
  • refactor: (refactoring production code, eg. renaming a variable)
  • test: (adding missing tests, refactoring tests; no production code change)
  • chore: (updating grunt tasks etc; no production code change)

References:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment