# configuration file for git-cliff (0.1.0) [changelog] # changelog header header = """ # 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 = """ """ [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 = "Features" }, { message = "^((?i)improvements|(?i)imp|(?i)impr|(?i)perf)", group = "Improvements" }, { message = "^((?i)fix|(?i)bug)", group = "Bug Fixes" }, { message = '^.*\(api\)!', group = "API Breaking" }, { message = '^.*\(statemachine\)!', group = "State Machine Breaking" }, { message = "^((?i)test)", group = "Testing" }, { message = "^((?i)doc|(?i)docs|(?i)documentation)", group = "Documentation" }, { message = "^((?i)deprecated)", group = "Deprecated" }, { message = "^((?i)deps|(?i)dep|(?i)build)", group = "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"