|
4 | 4 | # git-cliff ~ configuration file |
5 | 5 | # https://git-cliff.org/docs/configuration |
6 | 6 |
|
7 | | - |
8 | 7 | [changelog] |
9 | | -# A Tera template to be rendered for each release in the changelog. |
10 | | -# See https://keats.github.io/tera/docs/#introduction |
| 8 | +header = """ |
| 9 | +<!-- |
| 10 | +SPDX-FileCopyrightText: 2026 Adam Poulemanos <89049923+bashandbone@users.noreply.github.com> |
| 11 | +SPDX-License-Identifier: LicenseRef-PlainMIT OR MIT |
| 12 | +
|
| 13 | +Git-cliff generates this file from the git commit history. The configuration for how it generates this file is in `cliff.toml`. Please edit that file, not this one. |
| 14 | +
|
| 15 | +commit hashes cause false-positives for the spellchecker: |
| 16 | +spellchecker:off |
| 17 | +--> |
| 18 | +# Changelog |
| 19 | +
|
| 20 | +We document all important changes below. |
| 21 | +
|
| 22 | +Submod follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 23 | +""" |
11 | 24 | body = """ |
12 | 25 | {% if version %}\ |
13 | | - ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} |
| 26 | +## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} |
14 | 27 | {% else %}\ |
15 | | - ## [unreleased] |
| 28 | +## [Unreleased] |
16 | 29 | {% endif %}\ |
17 | | -{% for group, commits in commits | group_by(attribute="group") %} |
18 | | - ### {{ group | striptags | trim | upper_first }} |
19 | | - {% for commit in commits %} |
20 | | - - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ |
21 | | - {% if commit.breaking %}[**breaking**] {% endif %}\ |
22 | | - {{ commit.message | upper_first }}\ |
23 | | - {% endfor %} |
24 | | -{% endfor %} |
| 30 | +
|
| 31 | +{% for group, commits in commits | group_by(attribute="group") %}\ |
| 32 | +### {{ group | striptags | trim | upper_first }} |
| 33 | +
|
| 34 | +{% for commit in commits %}\ |
| 35 | +- {% if commit.scope %}(**{{ commit.scope }}**) {% endif %}\ |
| 36 | +{{ commit.message | upper_first }}\ |
| 37 | +([`{{ commit.id | truncate(length=7, end="") }}`](https://github.com/bashandbone/submod/commit/{{ commit.id }}))\ |
| 38 | +{% if commit.breaking %} [**breaking**]{% endif %} |
| 39 | +
|
| 40 | +{% endfor %}\ |
| 41 | +{% endfor %}\n |
25 | 42 | """ |
26 | | -# Remove leading and trailing whitespaces from the changelog's body. |
| 43 | +footer = "<!-- spellchecker:on -->" |
27 | 44 | trim = true |
28 | | -# Render body even when there are no releases to process. |
29 | | -render_always = true |
30 | | -# An array of regex based postprocessors to modify the changelog. |
31 | | -postprocessors = [ |
32 | | - # Replace the placeholder <REPO> with a URL. |
33 | | - #{ pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" }, |
34 | | -] |
35 | | -# render body even when there are no releases to process |
36 | | -# render_always = true |
37 | | -# output file path |
38 | | -# output = "test.md" |
39 | 45 |
|
40 | 46 | [git] |
41 | | -# Parse commits according to the conventional commits specification. |
42 | | -# See https://www.conventionalcommits.org |
43 | 47 | conventional_commits = true |
44 | | -# Exclude commits that do not match the conventional commits specification. |
45 | 48 | filter_unconventional = true |
46 | | -# Require all commits to be conventional. |
47 | | -# Takes precedence over filter_unconventional. |
48 | | -require_conventional = false |
49 | | -# Split commits on newlines, treating each line as an individual commit. |
50 | 49 | split_commits = false |
51 | | -# An array of regex based parsers to modify commit messages prior to further processing. |
52 | | -commit_preprocessors = [ |
53 | | - # Replace issue numbers with link templates to be updated in `changelog.postprocessors`. |
54 | | - { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))"}, |
55 | | - # Check spelling of the commit message using https://github.com/crate-ci/typos. |
56 | | - # If the spelling is incorrect, it will be fixed automatically. |
57 | | - { pattern = '.*', replace_command = 'typos --write-changes -' }, |
58 | | -] |
59 | | -# Prevent commits that are breaking from being excluded by commit parsers. |
60 | | -protect_breaking_commits = true |
61 | | -# An array of regex based parsers for extracting data from the commit message. |
62 | | -# Assigns commits to groups. |
63 | | -# Optionally sets the commit's scope and can decide to exclude commits from further processing. |
| 50 | +commit_preprocessors = [] |
64 | 51 | commit_parsers = [ |
65 | | - { message = "^feat", group = "<!-- 0 -->🚀 Features" }, |
66 | | - { message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" }, |
67 | | - { message = "^doc", group = "<!-- 3 -->📚 Documentation" }, |
68 | | - { message = "^perf", group = "<!-- 4 -->⚡ Performance" }, |
69 | | - { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" }, |
70 | | - { message = "^style", group = "<!-- 5 -->🎨 Styling" }, |
71 | | - { message = "^test", group = "<!-- 6 -->🧪 Testing" }, |
72 | | - { message = "^chore\\(release\\): prepare for", skip = true }, |
73 | | - { message = "^chore\\(deps.*\\)", skip = true }, |
74 | | - { message = "^chore\\(pr\\)", skip = true }, |
75 | | - { message = "^chore\\(pull\\)", skip = true }, |
76 | | - { message = "^chore|^ci", group = "<!-- 7 -->⚙️ Miscellaneous Tasks" }, |
77 | | - { body = ".*security", group = "<!-- 8 -->🛡️ Security" }, |
78 | | - { message = "^revert", group = "<!-- 9 -->◀️ Revert" }, |
79 | | - { message = ".*", group = "<!-- 10 -->💼 Other" }, |
| 52 | + { message = "^feat", group = "Features" }, |
| 53 | + { message = "^fix", group = "Bug Fixes" }, |
| 54 | + { message = "^perf", group = "Performance" }, |
| 55 | + { message = "^docs", group = "Documentation" }, |
| 56 | + { message = "^refactor", group = "Refactoring" }, |
| 57 | + { message = "^(ci|build)", group = "CI/Build" }, |
| 58 | + { message = "^chore\\(release\\)", skip = true }, |
| 59 | + { message = "^chore", group = "Miscellaneous" }, |
| 60 | + { message = "^revert", group = "Reverts" }, |
| 61 | + { message = "^test", group = "Testing" }, |
80 | 62 | ] |
81 | | -# Exclude commits that are not matched by any commit parser. |
| 63 | +protect_breaking_commits = false |
82 | 64 | filter_commits = false |
83 | | -# Fail on a commit that is not matched by any commit parser. |
84 | | -fail_on_unmatched_commit = false |
85 | | -# An array of link parsers for extracting external references, and turning them into URLs, using regex. |
86 | | -link_parsers = [] |
87 | | -# Include only the tags that belong to the current branch. |
88 | | -use_branch_tags = false |
89 | | -# Order releases topologically instead of chronologically. |
| 65 | +tag_pattern = "v[0-9]+\\.[0-9]+\\.[0-9]+" |
| 66 | +skip_tags = "" |
| 67 | +ignore_tags = "" |
90 | 68 | topo_order = false |
91 | | -# Order commits topologically instead of chronologically. |
92 | | -topo_order_commits = true |
93 | | -# Order of commits in each group/release within the changelog. |
94 | | -# Allowed values: newest, oldest |
95 | 69 | sort_commits = "oldest" |
96 | | -# Process submodules commits |
97 | | -recurse_submodules = false |
| 70 | +link_parsers = [] |
0 commit comments