128 lines
5.4 KiB
TOML
128 lines
5.4 KiB
TOML
# configuration file for git-cliff (0.1.0)
|
|
|
|
[changelog]
|
|
# changelog header
|
|
header = """
|
|
<!--
|
|
Guiding Principles:
|
|
|
|
Changelogs are for humans, not machines.
|
|
There should be an entry for every single version.
|
|
The same types of changes should be grouped.
|
|
Versions and sections should be linkable.
|
|
The latest version comes first.
|
|
The release date of each version is displayed.
|
|
Mention whether you follow Semantic Versioning.
|
|
|
|
Usage:
|
|
|
|
Changelog entries are generated by git cliff ref: https://github.com/orhun/git-cliff
|
|
|
|
Each commit should be conventional, the following message groups are supported.
|
|
|
|
* feat: A new feature
|
|
* fix: A bug fix
|
|
* docs: Documentation only changes
|
|
* style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
|
|
* refactor: A code change that neither fixes a bug nor adds a feature
|
|
* perf: A code change that improves performance
|
|
* test: Adding missing tests or correcting existing tests
|
|
* build: Changes that affect the build system or external dependencies (example scopes: go, npm)
|
|
* ci: Changes to our CI configuration files and scripts (example scopes: GH Actions)
|
|
* chore: Other changes that don't modify src or test files
|
|
* revert: Reverts a previous commit
|
|
|
|
When a change is made that affects the API or state machine, the commit message prefix should be suffixed with `!`.
|
|
|
|
Ref: https://github.com/commitizen/conventional-commit-types/blob/v3.0.0/index.json
|
|
-->
|
|
|
|
# Changelog
|
|
|
|
"""
|
|
# template for the changelog body
|
|
body = """
|
|
{% if version %}\
|
|
## [{{ version }}](https://github.com/cosmos/cosmos-sdk/releases/tag/{{version}}) - {{ timestamp | date(format="%Y-%m-%d") }}
|
|
{% else %}\
|
|
## [Unreleased]
|
|
{% endif %}\
|
|
{% for group, commits in commits | group_by(attribute="group") %}
|
|
### {{ group | striptags | trim | upper_first }}
|
|
{% for commit in commits %}
|
|
* {{ commit.message | upper_first }}\
|
|
{% endfor %}
|
|
{% endfor %}\n
|
|
"""
|
|
# remove the leading and trailing whitespace from the template
|
|
trim = true
|
|
# changelog footer
|
|
footer = """
|
|
<!-- generated by git-cliff -->
|
|
"""
|
|
|
|
[git]
|
|
# parse the commits based on https://www.conventionalcommits.org
|
|
conventional_commits = true
|
|
# filter out the commits that are not conventional
|
|
filter_unconventional = true
|
|
# process each line of a commit as an individual commit
|
|
split_commits = true
|
|
# regex for preprocessing the commit messages
|
|
commit_preprocessors = [
|
|
{ pattern = '.*', replace_command = 'sed -E "s/^(\S+)\s(.+)\s\((#[0-9]+)\)$/\1 (\3) \2/"' },
|
|
# A reference to an issue is append to commits that looks like "(#1234)", this will be replaced
|
|
# with a link to that issue, e.g. "[#$1234](https://github.com/cosmos/cosmos-sdk/issues/1234)".
|
|
{ pattern = '\(#(\d+)\)', replace = "[#${1}](https://github.com/cosmos/cosmos-sdk/issues/${1})" },
|
|
# replace multiple spaces with one space
|
|
{ pattern = " +", replace = " "},
|
|
|
|
# the following patterns only exist because "split_commits" is set to true, and we are processesing
|
|
# each line of the commit as a separate message.
|
|
# these exist to filter out common messages that appear in commit messages that are technically
|
|
# conventional, but we do not way to include in the changelog.
|
|
{ pattern = '^Signed-off-by:.*', replace='' },
|
|
{ pattern = '^Co-authored-by:.*', replace='' },
|
|
# don't include references to issues as changelog entries.
|
|
{ pattern = '^ref:.*', replace='' },
|
|
# exclude CVSS format, CVE can still be included in regular conventinal commits.
|
|
{ pattern = 'CVSS:.*', replace='' },
|
|
# don't include dependabot auto merge entries.
|
|
{ pattern = '.*dependabot-automerge-.*', replace='' },
|
|
# don't include statements saying which issue is closed.
|
|
{ pattern = '^closes:.*|Closes:.*', replace='' },
|
|
# remove standalone links in the commit messages.
|
|
{ pattern = '^https://.*', replace='' },
|
|
# remove lines with html.
|
|
{ pattern = '^<.*', replace='' },
|
|
]
|
|
|
|
# regex for parsing and grouping commits
|
|
commit_parsers = [
|
|
# specifying the number in a comment is a workaround to enable ordering of groups.
|
|
# these comments are stripped out of the markdown with the filter "{{ group | striptags | trim | upper_first }}"
|
|
# above in the body template.
|
|
{ message = "^((?i)feature|(?i)feat)", group = "<!-- 0 -->Features" },
|
|
{ message = "^((?i)improvements|(?i)imp|(?i)impr|(?i)perf)", group = "<!-- 1 -->Improvements" },
|
|
{ message = "^((?i)fix|(?i)bug)", group = "<!-- 2 -->Bug Fixes" },
|
|
{ message = '^.*\(api\)!', group = "<!-- 3 -->API Breaking" },
|
|
{ message = '^.*\(statemachine\)!', group = "<!-- 4 -->State Machine Breaking" },
|
|
{ message = "^((?i)test)", group = "<!-- 5 -->Testing" },
|
|
{ message = "^((?i)doc|(?i)docs|(?i)documentation)", group = "<!-- 6 -->Documentation" },
|
|
{ message = "^((?i)deprecated)", group = "<!-- 7 -->Deprecated" },
|
|
{ message = "^((?i)deps|(?i)dep|(?i)build)", group = "<!-- 8 -->Dependencies" },
|
|
{ message = "^revert|^ci|^chore|^refactor", skip = true} # explicitly skips changelog for reverts, CI, chore and refactor commits
|
|
]
|
|
# filter out the commits that are not matched by commit parsers
|
|
filter_commits = true
|
|
# glob pattern for matching git tags
|
|
# note SDK tags are purposely ignored, only submodules are included.
|
|
tag_pattern = "**/v[0-9]*"
|
|
# regex for skipping tags
|
|
skip_tags = ""
|
|
# regex for ignoring tags
|
|
ignore_tags = ""
|
|
# sort the tags chronologically
|
|
date_order = false
|
|
# sort the commits inside sections by oldest/newest order
|
|
sort_commits = "newest" |