git-cliff
SDLC / Policy-as-Code
Konfigurowalny generator changelogów z historii Git - Conventional Commits + parsery regex i szablony.
git-cliff to napisany w Rust, mocno konfigurowalny generator changelogów z historii Git. Domyślnie rozumie Conventional Commits (grupuje wpisy po typie: feat, fix, docs…), ale potrafi też parsować dowolne komunikaty commitów regexami, a wynik formatuje przez silnik szablonów Tera - więc changelog wyprodukujesz w Markdown albo dowolnym własnym formacie. Kluczowa cecha: robi jedną rzecz - changelog - i jest przy tym językowo-agnostyczny (działa na każdym repo, to jeden binarny plik/kontener), więc łatwo wpina się w istniejący proces.
Kiedy używać
- Chcesz ładny, spójny changelog generowany z historii Git - bez wiązania się z konkretnym ekosystemem języka.
- Potrzebujesz pełnej kontroli nad formatem (szablony Tera) lub masz commity spoza Conventional Commits (parsery regex).
- Wolisz osobne, wymienne narzędzie do changelogu zamiast monolitu robiącego wszystko.
Przykład użycia
# cliff.toml - fragment: grupowanie i format
[git]
conventional_commits = true
filter_unconventional = false
commit_parsers = [
{ message = "^feat", group = "Nowe funkcje" },
{ message = "^fix", group = "Poprawki" },
]
# changelog dla nowej wersji, dopisany na górę pliku
git cliff --tag v1.2.0 --output CHANGELOG.md
Warto wiedzieć
- Uzupełnia narzędzia wydań: semantic-release i release-please same generują changelog, ale git-cliff daje najwięcej kontroli nad jego kształtem i działa niezależnie od języka.
- Podejście i standardy stojące za tym opisuję w wersjonowaniu: SemVer + Conventional Commits.
- Wpina się w CI (np. Gitea Actions) jako pojedynczy krok; ma też akcję i integracje z GitHub/GitLab.