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
+ # template for the changelog body
10
+ # https://keats.github.io/tera/docs/#introduction
11
+ body = """
12
+ # Changelog
13
+
14
+ {% if version %}\
15
+ **Full Commit Log**: <REPO>/commits/{{ version }}\n
16
+ ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
17
+ {% else %}\
18
+ ## [unreleased]
19
+ {% endif %}\
20
+ {% for group, commits in commits | group_by(attribute="group") %}
21
+ ### {{ group | striptags | trim | upper_first }}
22
+ {% for commit in commits %}
23
+ - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
24
+ {% if commit.breaking %}[**breaking**] {% endif %}\
25
+ {{ commit.message | upper_first }}\
26
+ {% endfor %}
27
+ {% endfor %}\n
28
+ """
29
+
30
+ # remove the leading and trailing s
31
+ trim = true
32
+ # postprocessors
33
+ postprocessors = [
34
+ { pattern = ' <REPO>' , replace = " https://github.com/kcoderhtml/hackatime" }, # replace repository URL
35
+ ]
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 parsing and grouping commits
45
+ commit_parsers = [
46
+ { message = " ^feat" , group = " <!-- 0 -->π Features" },
47
+ { message = " ^fix" , group = " <!-- 1 -->π Bug Fixes" },
48
+ { message = " ^doc" , group = " <!-- 3 -->π Documentation" },
49
+ { message = " ^perf" , group = " <!-- 4 -->β‘ Performance" },
50
+ { message = " ^refactor" , group = " <!-- 2 -->π Refactor" },
51
+ { message = " ^style" , group = " <!-- 5 -->π¨ Styling" },
52
+ { message = " ^test" , group = " <!-- 6 -->π§ͺ Testing" },
53
+ { message = " ^chore\\ (release\\ ): prepare for" , skip = true },
54
+ { message = " ^chore\\ (deps.*\\ )" , skip = true },
55
+ { message = " ^chore\\ (pr\\ )" , skip = true },
56
+ { message = " ^chore\\ (pull\\ )" , skip = true },
57
+ { message = " ^chore|^ci" , group = " <!-- 7 -->βοΈ Miscellaneous Tasks" },
58
+ { body = " .*security" , group = " <!-- 8 -->π‘οΈ Security" },
59
+ { message = " ^revert" , group = " <!-- 9 -->βοΈ Revert" },
60
+ ]
61
+ # protect breaking changes from being skipped due to matching a skipping commit_parser
62
+ protect_breaking_commits = false
63
+ # filter out the commits that are not matched by commit parsers
64
+ filter_commits = false
65
+ # regex for matching git tags
66
+ # tag_pattern = "v[0-9].*"
67
+ # regex for skipping tags
68
+ # skip_tags = ""
69
+ # regex for ignoring tags
70
+ # ignore_tags = ""
71
+ # sort the tags topologically
72
+ topo_order = false
73
+ # sort the commits inside sections by oldest/newest order
74
+ sort_commits = " oldest"
75
+ # limit the number of commits included in the changelog.
76
+ # limit_commits = 42
0 commit comments