1
+ # git-cliff ~ default configuration file
2
+ # https://git-cliff.org/docs/configuration
3
+ #
4
+ # Lines starting with "#" are comments.
5
+ # Configuration options are organized into tables and keys.
6
+ # See documentation for more information on available options.
7
+
8
+ [changelog ]
9
+ # changelog header
10
+ header = """
11
+ # Changelog\n
12
+ All notable changes to this project will be documented in this file.\n
13
+ """
14
+ # template for the changelog body
15
+ # https://keats.github.io/tera/docs/#introduction
16
+ body = """
17
+ {% if version %}\
18
+ {% if previous.version %}\
19
+ ## [{{ version | trim_start_matches(pat="v") }}](https://github.com/cloudflare/pingora/compare/{{ previous.version }}...{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
20
+ {% else %}\
21
+ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
22
+ {% endif %}\
23
+ {% else %}\
24
+ ## [unreleased]
25
+ {% endif %}\
26
+
27
+ ### Highlights
28
+ - Human-written change summaries go here
29
+
30
+ {% for group, commits in commits | group_by(attribute="group") %}
31
+ ### {{ group | striptags | trim | upper_first }}
32
+ {% for commit in commits %}
33
+ - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
34
+ {% if commit.breaking %}[**breaking**] {% endif %}\
35
+ {{ commit.message | upper_first }}\
36
+ {% endfor %}
37
+ {% endfor %}\n
38
+ """
39
+ # template for the changelog footer
40
+ footer = """
41
+ """
42
+ # remove the leading and trailing whitespace
43
+ trim = true
44
+
45
+ [git ]
46
+ # parse the commits based on https://www.conventionalcommits.org
47
+ conventional_commits = true
48
+
49
+ # filter out the commits that are not conventional
50
+ filter_unconventional = false
51
+
52
+ # process each line of a commit as an individual commit
53
+ split_commits = false
54
+
55
+ # regex for preprocessing the commit messages
56
+ commit_preprocessors = [
57
+ { pattern = ' \n\w+(?:\-\w+)*:\s+[^\n]+' , replace = " \n " },
58
+ { pattern = ' \n+' , replace = " \n " },
59
+ { pattern = ' \s+$' , replace = " " }
60
+ ]
61
+
62
+ # regex for parsing and grouping commits
63
+ commit_parsers = [
64
+ { message = " ^feat" , group = " <!-- 0 -->🚀 Features" },
65
+ { message = " ^fix" , group = " <!-- 1 -->🐛 Bug Fixes" },
66
+ { message = " ^doc" , group = " <!-- 3 -->📚 Documentation" , skip = true },
67
+ { message = " ^perf" , group = " <!-- 4 -->⚡ Performance" },
68
+ { message = " ^refactor" , group = " <!-- 2 -->🚜 Refactor" , skip = true },
69
+ { message = " ^style" , group = " <!-- 5 -->🎨 Styling" , skip = true },
70
+ { message = " ^test" , group = " <!-- 6 -->🧪 Testing" , skip = true },
71
+ { message = " ^chore\\ (release\\ ): prepare for" , skip = true },
72
+ { message = " ^chore\\ (deps.*\\ )" , skip = true },
73
+ { message = " ^chore\\ (pr\\ )" , skip = true },
74
+ { message = " ^chore\\ (pull\\ )" , skip = true },
75
+ { message = " ^chore|^ci" , group = " <!-- 7 -->⚙️ Miscellaneous Tasks" },
76
+ { body = " .*security" , group = " <!-- 8 -->🛡️ Security" },
77
+ { message = " ^revert" , group = " <!-- 9 -->◀️ Revert" },
78
+ { message = ' \S+(?:\s+\S+){6,}' , group = " <!--10--> Everything Else" }
79
+ ]
80
+
81
+ # protect breaking changes from being skipped due to matching a skipping commit_parser
82
+ protect_breaking_commits = false
83
+
84
+ # filter out the commits that are not matched by commit parsers
85
+ filter_commits = false
86
+ tag_pattern = " [0-9].[0-9].[0-9]"
87
+ topo_order = false
0 commit comments