What's new in 2.7.0? 🆕
git-cliff is a command-line tool (written in Rust) that provides a highly customizable way to generate changelogs from git history.
It supports using custom regular expressions to alter changelogs which are mostly based on conventional commits. With a single configuration file, a wide variety of formats can be applied for a changelog, thanks to the Jinja2/Django-inspired template engine.
More information and examples can be found in the GitHub repository.
What's new? ⛰️
The full changelog can be found here.
🥋 Jujutsu Support
git-cliff
now supports opening a repository that has been cloned using Jujutsu!
For example:
$ jj git clone --colocate https://github.com/orhun/git-cliff
$ cd git-cliff
$ git cliff # works!
This works differently with colocated and non-colocated repositories. See the documentation for more information.
Watch my first live reaction to Jujutsu on this stream: Learning Jujutsu (a version control system)
☘️ Add missing fields to context
A bug causing some fields such as footer
to be missing in the context JSON has been fixed.
This means that the following command now yields an identical result with git-cliff
:
# hey look, a snake eating its own tail! 🐍
git cliff --context | git cliff --from-context
--context
: prints the changelog context as JSON--from-context
: generates a changelog from the context JSON
📩 Raw message in context
The context now contains the raw/unprocessed full commit message in the raw_message
field. For example:
{
"version": "v0.1.0-rc.21",
"message": "The annotated tag message for the release",
"commits": [
{
"raw_message": "<type>[scope]: <description>\n[body]\n[footer(s)]"
}
]
}
You can use it like so:
{% for commit in commits %}
{{ commit.raw_message }}
{% endfor %}
⚙️ Remote API URL configuration
In addition to the command-line/environment variables, you can now override the remote API URL in the configuration file as follows:
[remote.gitlab]
owner = "archlinux"
repo = "arch-repro-status"
api_url = "https://gitlab.archlinux.org/api/v4" # new!
This is useful when you have a self-hosted Git service and want to use the API for fetching metadata.
See the remote
configuration for more information.
✨ Preserve first time contributors
There was a bug causing the first time contributors to be removed from the changelog when there was a new release. This has been fixed and now the first time contributors are preserved in the changelog.
So if you run git cliff
now, you might get new names in the changelog! Don't be surprised.
See this pull request for more details.
🐋 ARM Docker images
We brought back the Docker images for ARM64! 🎉 See them here.
docker run --platform linux/arm64 -t -v "$(pwd)":/app/ "orhunp/git-cliff:${TAG:-latest}"
There was a problem building these images due to the timeouts in the GitHub Actions workflow. This turned out to be a problem related to needlessly fetching the Rust toolchain in the build step of cargo-chef
and is now fixed in this pull request.
See the related discussion here.
❄️ Nix environment
We now have a basic and reproducible dev environment using Nix along with CI checks for it.
Here is the Nix flake and you can use it by running nix build
and nix run
commands.
🎨 Colored help
A small cosmetic change, but the output of git cliff --help
is now colorful!
Try it for yourself :)
💖 User testimonials
Do you like git-cliff
? Spread the word on social media and let me know your thoughts! I will be featuring your testimonials.
I collected the testimonials that I could find so far and added them to the website. It picks one randomly on each page load.
Shoutout to those amazing people!
🚀 Stabilize remote integration
The remote integration with GitHub/GitLab/Gitea/Bitbucket has been stabilized and now works as expected (apart from a couple of bugs that come and go occasionally).
🧰 Other
- (log) Add trace log about which command is being run - (a9b2690)
- (bitbucket) Match PR and release metadata correctly (#907) - (e936ed5)
- (changelog) Include the root commit when
--latest
is used with one tag (#901) - (508a97e) - (config) Add the 'other' parser to the default config - (12cb1df)
- (git) Improve docs for commit_preprocessors and commit_parsers (#928) - (c1f1215)
Contributions 👥
- @pauliyobo made their first contribution in #896
- @blackheaven made their first contribution in #939
- @Muhammad-Owais-Warsi made their first contribution in #928
- @kemitix made their first contribution in #930
- @mcwarman made their first contribution in #925
- @LtdSauce made their first contribution in #919
- @dqkqd made their first contribution in #920
- @gsquire made their first contribution in #909
- @rarescosma made their first contribution in #901
- @vsn4ik made their first contribution in #894
Any contribution is highly appreciated! See the contribution guidelines for getting started.
Feel free to submit issues and join our Discord / Matrix for discussion!
Follow git-cliff
on Twitter & Mastodon to not miss any news!
Support 🌟
If you liked git-cliff
and/or my other projects on GitHub, consider donating to support my open source endeavors.
- 💖 GitHub Sponsors: @orhun
- ☕ Buy Me A Coffee: https://www.buymeacoffee.com/orhun
Have a fantastic day! ⛰️