← Katalog
E I A C

git-cliff

SDLC / Policy-as-Code

Konfigurowalny generator changelogów z historii Git - Conventional Commits + parsery regex i szablony.

★ 10 000 MIT/Apache-2.0 #sdlc #changelog #conventional-commits #rust

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.