Conventional Commits
1. Bevezetés¶
Napjainkban a szoftverfejlesztési szektorban a legelterjedtebb szabvány a Conventional Commits (Konvencionális Commitok). Ez a specifikáció az Angular projekt belső irányelveiből nőtt ki, és célja, hogy strukturált, mind az emberek, mind a gépek által könnyen elemezhető adatokat szolgáltasson a kódbázis változásairól.
1.1. A Conventional Commits strukturális felépítése¶
A szabvány egy szigorú, háromszintű hierarchiát ír elő minden véglegesítési üzenethez, biztosítva az egységességet a teljes projektben.
Fejléc (Header): Ez a legfontosabb rész, amely tartalmazza a típus (type), az opcionális hatókör (scope) és a rövid leírás (description) elemeket. A formátuma:( ): . Törzs (Body): Egy üres sorral elválasztva következik a fejléc után. Itt a fejlesztő részletezi a változtatás miértjét, a megoldás hátterét és az esetleges mellékhatásokat.Lábléc (Footer): Szintén egy üres sor választja el a törzstől. Itt kapnak helyet a gyökeres változásokra (BREAKING CHANGE) vonatkozó figyelmeztetések, valamint a jegyrendszer-hivatkozások (pl. Jira ticket számok).
A típusok meghatározása kulcsfontosságú az automatizáció szempontjából, mivel ezek alapján dől el a verziószám növelésének mértéke a Semantic Versioning (SemVer) elvei szerint.
| Típus | Leírás | SemVer hatás |
|---|---|---|
| feat | Új funkció bevezetése a végfelhasználó számára | MINOR (közepes) |
| fix | Hiba kijavítása a kódban | PATCH (hibajavítás) |
| docs | Kizárólag dokumentációs módosítások | Nincs / PATCH |
| style | Kódformázás, fehérközök, hiányzó pontosvesszők | Nincs |
| refactor | Kód újraszervezése funkcionális változás nélkül | Nincs |
| perf | Teljesítményt javító kódmódosítás | PATCH |
| test | Tesztek hozzáadása vagy javítása | Nincs |
| chore | Karbantartás, build folyamat vagy segédeszközök frissítése | Nincs |
| build | Külső függőségek vagy build rendszerek módosítása | PATCH |
| ci | CI konfigurációs fájlok (pl. GitHub Actions, Jenkins) | Nincs |
1.2. Példák commit üzenetekre¶
Néhány tipikus példa Conventional Commits stílusban:
feat(auth): add login functionality
fix: correct typo in README
docs: update API usage documentation
perf: improve query performance
Vagy ha törő változást vezetünk be:
feat!: remove support for Node 6
BREAKING CHANGE: build pipeline now requires Node 8 or higher.