cliff.toml (2835B)
1 # configuration file for git-cliff 2 3 [changelog] 4 # changelog header 5 header = """ 6 # Changelog\n 7 Following is a list of commits (fixes/features only) in this release.\n 8 See `:help news` in Nvim for release notes.\n 9 """ 10 # template for the changelog body 11 # https://github.com/Keats/tera 12 # https://keats.github.io/tera/docs/ 13 body = """ 14 {% if version %}\ 15 # [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} 16 {% else %}\ 17 # [unreleased] 18 {% endif %}\ 19 {% for group, commits in commits | group_by(attribute="group") %} 20 {{ group | striptags | upper_first }} 21 -------------------------------------------------------------------------------- 22 {% for commit in commits | sort(attribute="message")%}\ 23 {% if not commit.scope %}\ 24 - {{ commit.id | truncate(length=12, end="") }} {{ commit.message }} 25 {% endif %}\ 26 {% endfor %}\ 27 {% for group, commits in commits | group_by(attribute="scope") %}\ 28 {% for commit in commits | sort(attribute="message") %}\ 29 - {{ commit.id | truncate(length=12, end="") }} {{commit.scope}}: {{ commit.message }} 30 {% endfor %}\ 31 {% endfor %} 32 {% endfor %}\n 33 """ 34 # remove the leading and trailing whitespace from the template 35 trim = true 36 37 [git] 38 # parse the commits based on https://www.conventionalcommits.org 39 conventional_commits = true 40 # filter out the commits that are not conventional 41 filter_unconventional = true 42 # process each line of a commit as an individual commit 43 split_commits = false 44 # regex for preprocessing the commit messages 45 commit_preprocessors = [ 46 # { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](https://github.com/neovim/neovim/issues/${2}))"}, 47 ] 48 # regex for parsing and grouping commits 49 commit_parsers = [ 50 { message = "!:", group = "<!-- 0 -->BREAKING"}, 51 { message = "^feat", group = "<!-- 1 -->FEATURES"}, 52 { message = "^fix", group = "<!-- 2 -->FIXES"}, 53 { message = "^perf", group = "<!-- 3 -->PERFORMANCE"}, 54 { message = "^build", group = "<!-- 4 -->BUILD"}, 55 { message = "^vim-patch", group = "<!-- 5 -->VIM PATCHES"}, 56 { message = "^refactor", group = "<!-- 6 -->REFACTOR" }, 57 { message = "^ci", group = "<!-- 8 -->CI" }, 58 { message = "^test", group = "<!-- 9 -->TESTING" }, 59 { message = "^docs", group = "<!-- 99 -->DOCUMENTATION" }, 60 { message = "^revert", group = "<!-- 999 -->REVERTED CHANGES" }, 61 { message = ".*", group = "<!-- 9999 -->OTHER"}, 62 ] 63 # filter out the commits that are not matched by commit parsers 64 filter_commits = true 65 # glob pattern for matching git tags 66 tag_pattern = "v[0-9]*" 67 # regex for skipping tags 68 skip_tags = "v0.1.0-beta.1" 69 # regex for ignoring tags 70 ignore_tags = "" 71 # sort the tags chronologically 72 date_order = false 73 # sort the commits inside sections by oldest/newest order 74 sort_commits = "oldest"