Skip to content
GitLabGitHub

Standard opisywania commitów

Standardy

Conventional Commits w organizacji rachuna-net. Wdrożenie tej konwencji umożliwia uporządkowaną historię zmian, automatyzację wersjonowania i łatwiejszą współpracę zespołową.

Wiadomość commita powinna być zgodna z poniższym schematem:

<typ>[!][(zakres)]: krótki opis zmiany

Przykłady

feat: dodano obsługę logowania
fix(auth): naprawiono błąd walidacji tokenu
refactor!: przebudowano system autoryzacji (breaking change)
chore(ci): aktualizacja pipeline’a GitLab CI

TypOpis
featNowa funkcjonalność
fixPoprawka błędu
docsZmiany w dokumentacji
styleFormatowanie (np. spacje, przecinki)
refactorRefaktoryzacja kodu (bez zmiany zachowania)
testDodanie lub zmiana testów
choreZadania techniczne (np. zmiany w CI/CD)
params[dodane w organizacji pl.rachuna-net] - Parametryzacja

Aby oznaczyć zmianę łamiącą kompatybilność wsteczną, należy dodać wykrzyknik (!) po typie commita.

git commit -m 'refactor!: zmieniono sposób uwierzytelniania'

  • ✅ Spójna i czytelna historia commitów
  • ✅ Automatyczne generowanie changelogów
  • ✅ Wsparcie dla semantic-release i automatycznego wersjonowania
  • ✅ Łatwiejsze code review i analiza zmian
  • ✅ Możliwość automatycznej walidacji commitów w CI/CD

W procesie gitlab-CI został utworzony job 🔍 Analyze Conventional Commits. W wersjach wyższych niż gitlab-ce można zastosować PUSH RULES

Jak działa job?

Job analizuje wyniki z polecania, który zwraca listę commitów i na jej podstawie dokonywana jest analiza pod kątem zgodności z regexp.

CI_DEFAULT_BRANCH="main"
git --no-pager log origin/$CI_DEFAULT_BRANCH..HEAD --pretty=format:"%s"

Jak naprawić błąd walidacji?

  • Popraw tytuł commita: git commit --amend (dla ostatniego) lub git rebase -i (dla wielu), zmień message na zgodny ze wzorcem, a następnie git push --force-with-lease.

Przykłady:

To polecenie wyświetla listę commitów z lokalnej gałęzi (HEAD) względem domyślnego brancha - main, czyli badany jest tylko przyrost.


Wdrożenie Conventional Commits to szybki krok w stronę lepszej automatyzacji, przejrzystości i jakości pracy w projektach GitLab. Rekomendujemy uwzględnienie tej konwencji w każdym nowym repozytorium oraz integrację z commitlint, semantic-release i husky.

regexp:

^(build|chore|ci|docs|feat|fix|perf|refactor|style|test|revert|merge|release|hotfix|fixup|squash|wip|BREAKING CHANGE)(\([a-zA-Z0-9_-]+\))?!?:\s.+$