This commit is contained in:
Pia B. 2026-07-28 07:54:43 +00:00 committed by GitHub
commit f02b0efe8d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

136
cliff.toml Normal file
View File

@ -0,0 +1,136 @@
# git-cliff ~ configuration file
# https://git-cliff.org/docs/configuration
[changelog]
# A Tera template to be rendered for each release in the changelog.
# See https://keats.github.io/tera/docs/#introduction
# discard duplicate commits
# {% for commit in commits | unique(attribute="message") %},
# filter merge commits
# {% for group, commits in commits | filter(attribute="merge_commit", value=false) | group_by(attribute="group") %},
# strip tags
# {{ group | striptags | trim | upper_first }}
# when we integrate it with github we can also get the userhandles like following
# {%- if commit.remote.username -%} (by @{{ commit.remote.username }}){%- endif -%}\
body = """
{% if commit_range %}
## last included commit {{ commit_range.to | truncate(length=10, end="") }}
{% endif %}\
{% if version %}\
## [{{ version }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
## [unreleased]
{% endif %}\
{% for group, commits in commits | filter(attribute="merge_commit", value=false) | group_by(attribute="group") %}
### {{ group | striptags | trim | upper_first }}
{% for commit in commits | unique(attribute="message") %}
- {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
{% if commit.breaking %}[**breaking**] {% endif %}\
{{ commit.message | split(pat="Co-authored-by:") | first | split(pat="Signed-off-by:") | first | trim | upper_first }}\
{%- if commit.author.name -%} (by @{{ commit.author.name }}){%- endif -%}\
{% endfor %}
{% endfor %}
"""
# A Tera template to be rendered as the changelog's footer.
# See https://keats.github.io/tera/docs/#introduction
# footer = """
# {% for release in releases -%}
# {% if release.version -%}
# {% if release.previous.version -%}
# [{{ release.version | trim_start_matches(pat="v") }}]: \
# https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\
# /compare/{{ release.previous.version }}..{{ release.version }}
# {% else -%}
# [{{ release.version }}]: \
# https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\
# /tree/{{ release.version }}
# {% endif -%}
# {% else -%}
# [unreleased]: https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\
# /compare/{{ release.previous.version }}..HEAD
# {% endif -%}
# {% endfor %}
# <!-- generated by git-cliff -->
# """
# Remove leading and trailing whitespaces from the changelog's body.
trim = true
# An array of regex based postprocessors to modify the changelog.
postprocessors = [
# Replace the placeholder <REPO> with a URL.
#{ pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" },
]
# render body even when there are no releases to process
# render_always = true
# output file path
output = "unreleased.md"
[git]
# Parse commits according to the conventional commits specification.
# See https://www.conventionalcommits.org
conventional_commits = true
# Exclude commits that do not match the conventional commits specification.
filter_unconventional = false
# Require all commits to be conventional.
# Takes precedence over filter_unconventional.
require_conventional = false
# Split commits on newlines, treating each line as an individual commit.
split_commits = false
# An array of regex based parsers to modify commit messages prior to further processing.
commit_preprocessors = [
# Replace issue numbers with link templates to be updated in `changelog.postprocessors`.
#{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"},
# Check spelling of the commit message using https://github.com/crate-ci/typos.
# If the spelling is incorrect, it will be fixed automatically.
#{ pattern = '.*', replace_command = 'typos --write-changes -' },
]
# Prevent commits that are breaking from being excluded by commit parsers.
protect_breaking_commits = true
# An array of regex based parsers for extracting data from the commit message.
# Assigns commits to groups.
# Optionally sets the commit's scope and can decide to exclude commits from further processing.
commit_parsers = [
{ message = "(?i)^refactor", skip = true },
{ message = "^chore\\(release\\): prepare for", skip = true },
{ message = "^chore\\(deps.*\\)", skip = true },
{ message = "^chore\\(pr\\)", skip = true },
{ message = "^chore\\(pull\\)", skip = true },
{ message = "^New Crowdin Translations", skip = true },
{ message = "(?i)^update|(?i)^bump", skip = true },
{ message = "(?i)^add", group = "<!-- 1 -->Added" },
{ message = "(?i)^feat", group = "<!-- 1 -->Added" },
{ message = "(?i)^change", group = "<!-- 3 -->Changed" },
{ message = "(?i)^fix", group = "<!-- 2 -->Fixed" },
{ message = "(?i)^deprecate", group = "<!-- 4 -->Deprecated" },
{ message = "(?i)^remove", group = "<!-- 5 -->Removed" },
{ message = "^doc", group = "<!-- 3 -->Changed" },
{ message = "^perf", group = "<!-- 3 -->Changed" },
{ message = "^style", group = "<!-- 3 -->Changed" },
{ message = "^test", group = "<!-- 3 -->Changed" },
{ body = ".*security", group = "<!-- 0 -->Security" },
{ message = ".*", group = "<!-- 6 -->Other" },
# we can also sort by PR labels, if this is easier
# like { field = "github.pr_labels", pattern = "bug", group = "Fixed" },
# or group renovate PRs
# { field = "author.name", pattern = "renovate\\[bot\\]", group = "Dependency Updates"},
]
# Exclude commits that are not matched by any commit parser.
filter_commits = false
skip_tags = "4.6.0-rc.1"
# Fail on a commit that is not matched by any commit parser.
fail_on_unmatched_commit = false
# An array of link parsers for extracting external references, and turning them into URLs, using regex.
link_parsers = []
tag_pattern = "v[0-9].*"
# Include only the tags that belong to the current branch.
use_branch_tags = false
# Order releases topologically instead of chronologically.
topo_order = false
# Order commits topologically instead of chronologically.
topo_order_commits = true
# Order of commits in each group/release within the changelog.
# Allowed values: newest, oldest
sort_commits = "oldest"
# Process submodules commits
recurse_submodules = false