mirror of
https://github.com/orhun/git-cliff.git
synced 2024-11-29 13:32:20 +03:00
A highly customizable Changelog Generator that follows Conventional Commit specifications ⛰️
changelogchangelog-generatorcommitconventional-changelogconventional-commitsgeneratorhacktoberfestkeepachangelogrustsemverstarred-orhun-repostarred-repo
8430c5c539
* perf: cache commit retain checks + 87 times faster generation This caches the commit retain checks whenever include/exclude paths are specified. This speeds up changelog generation by `87` times in a big repository I have: ``` Now: 0.237 s Before: 20.633 s ``` * perf: use separate retain_commit cache for each repository * fix: use cacache for parallel git-local cache - 258 times faster Sled fails to open the cache if multiple git-cliff processes run on the same repository. This fixes the issue by using cacache which stores the cache locally under .git/git-cliff * fix: cache changed files of a commit directly This slows down the retain_commit check by ~2 times, but allows reusing the cache in case the include/exclude patterns change. This is beneficial for running in monorepos where git-cliff runs multiple times to generate changelog for different subsets of the repo * fix: consider include/exclude patterns together * fix: handle first commit for changed_files * fix: normalize glob patterns to ignore ./ * docs: add docs for retain_commit_check and cache algorithms * fix: add ** if a pattern represents a directory * test: add tests for should retain commit checks * fix: correctly get the files list for the first commit * test: add test email/name for git commits * fix: use / for path joining in entries to match the git behaviour * fix: revert change of include/exclude patterns to slices The slices are normalized, so an owned pattern is needed to avoid type mismatch between new normalized/unchanged patterns * refactor: polish implementation * refactor: apply clippy suggestion --------- Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com> |
||
---|---|---|
.github | ||
config | ||
examples | ||
git-cliff | ||
git-cliff-core | ||
npm | ||
pypi | ||
website | ||
.cliffignore | ||
.dockerignore | ||
.editorconfig | ||
.gitignore | ||
.lycheeignore | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
cliff.toml | ||
CNAME | ||
CODE_OF_CONDUCT.md | ||
codecov.yml | ||
CONTRIBUTING.md | ||
Dockerfile | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md | ||
RELEASE.md | ||
release.sh | ||
rust-toolchain.toml | ||
rustfmt.toml | ||
SECURITY.md | ||
typos.toml |
Documentation | Website
git-cliff can generate changelog files from the Git history by utilizing conventional commits as well as regex-powered custom parsers. The changelog template can be customized with a configuration file to match the desired format.
Documentation
Learn how to use git-cliff from the documentation.
In The Media
- Turning Git commits into changelog with git-cliff - RustLab 2023 (Talk)
- An Interview with Orhun of git-cliff - Console #141 (Newsletter)
- KaiCode Open Source Festival 2024 (Second place winner)
Editor Support
- git-cliff.el - Generate, update and release changelog in Emacs
Similar/Related Projects
- git-journal - The Git Commit Message and Changelog Generation Framework
- clog-cli - Generate beautiful changelogs from your Git commit history
- relnotes - A tool to automatically generate release notes for your project.
- cocogitto - A set of CLI tools for the conventional commit and semver specifications.
- cliff-jumper - A NodeJS CLI tool that combines git-cliff and conventional-recommended-bump to semantically bump a NodeJS package and generate a git-cliff powered changelog.
- release-plz - Release Rust packages from CI.
- git-changelog-command-line - Generate changelog and determine next version with conventional commits.
- git-changelog: Automatic Changelog generator using Jinja2 templates.
Contributors
Thanks goes to these wonderful people ✨
Made with contrib.rocks.
Socials
License
Licensed under either of Apache License Version 2.0 or The MIT License at your option.
Copyright
Copyright © 2021-2024, git-cliff contributors