1+ # git-cliff ~ configuration file
2+ # https://git-cliff.org/docs/configuration
3+
4+
5+ [changelog ]
6+ # A Tera template to be rendered for each release in the changelog.
7+ # See https://keats.github.io/tera/docs/#introduction
8+ body = """
9+ {% if version %}\
10+ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
11+ {% else %}\
12+ ## [unreleased]
13+ {% endif %}\
14+ {% for group, commits in commits | group_by(attribute="group") %}
15+ ### {{ group | striptags | trim | upper_first }}
16+ {% for commit in commits %}
17+ - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
18+ {% if commit.breaking %}[**breaking**] {% endif %}\
19+ {{ commit.message | upper_first }}\
20+ {% endfor %}
21+ {% endfor %}
22+ {% if github.contributors | length > 0 %}
23+ ### Community & Contributors
24+
25+ This release we had a total of **{{ github.contributors | length }}** contributors!
26+ If you want to engage with us, check our [community page](https://ocm.software/community/engagement/)!
27+ {% endif %}
28+ """
29+
30+ # Remove leading and trailing whitespaces from the changelog's body.
31+ trim = true
32+ # Render body even when there are no releases to process.
33+ render_always = true
34+ # An array of regex based postprocessors to modify the changelog.
35+ postprocessors = [
36+ # Replace the placeholder <REPO> with a URL.
37+ # { pattern = '<REPO>', replace = "https://github.com/orhun/git-cliff" },
38+ ]
39+
40+ [git ]
41+ # Parse commits according to the conventional commits specification.
42+ # See https://www.conventionalcommits.org
43+ conventional_commits = true
44+ # Exclude commits that do not match the conventional commits specification.
45+ 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+ 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+ ]
56+ # Prevent commits that are breaking from being excluded by commit parsers.
57+ protect_breaking_commits = true
58+ # An array of regex based parsers for extracting data from the commit message.
59+ # Assigns commits to groups.
60+ # Optionally sets the commit's scope and can decide to exclude commits from further processing.
61+ commit_parsers = [
62+ { message = " ^feat" , group = " <!-- 0 -->🚀 Features" },
63+ { message = " ^chore\\ (deps.*\\ )" , group = " <!-- 2 -->📚 Dependencies" },
64+ { message = " ^fix\\ (deps.*\\ )" , group = " <!-- 2 -->📚 Dependencies" },
65+ { message = " ^chore\\ (docs.*\\ )" , group = " <!-- 8 -->📚 Documentation" },
66+ { message = " ^fix\\ (docs.*\\ )" , group = " <!-- 8 -->📚 Documentation" },
67+ { message = " ^docs" , group = " <!-- 8 -->📚 Documentation" },
68+ { message = " ^fix" , group = " <!-- 1 -->🐛 Bug Fixes" },
69+ { message = " ^chore|^ci|chore\\ (ci.*\\ )|fix\\ (ci.*\\ )" , group = " <!-- 7 -->⚙️ Miscellaneous Tasks" },
70+ ]
71+ # Exclude commits that are not matched by any commit parser.
72+ filter_commits = false
73+ # An array of link parsers for extracting external references, and turning them into URLs, using regex.
74+ link_parsers = []
75+ # Order releases topologically instead of chronologically.
76+ topo_order = false
77+ # Order releases topologically instead of chronologically.
78+ topo_order_commits = true
79+ # Order of commits in each group/release within the changelog.
80+ # Allowed values: newest, oldest
81+ sort_commits = " oldest"
82+ # Process submodules commits
83+ recurse_submodules = false
0 commit comments