From 82e35fb1cfd7f2d0f1b2dc4cd5cff0a23e228250 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Mon, 29 May 2023 18:43:23 -0400 Subject: [PATCH] feat: commit gitchangelog.rc to repo so anyone can generate a changelog --- .gitchangelog.rc | 117 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 .gitchangelog.rc diff --git a/.gitchangelog.rc b/.gitchangelog.rc new file mode 100644 index 0000000..842973f --- /dev/null +++ b/.gitchangelog.rc @@ -0,0 +1,117 @@ +# +# Format +# +# ACTION: [AUDIENCE:] COMMIT_MSG [@TAG ...] +# +# Description +# +# ACTION is one of 'chg', 'fix', 'new' +# +# Is WHAT the change is about. +# +# 'chg' is for refactor, small improvement, cosmetic changes... +# 'fix' is for bug fixes +# 'new' is for new features, big improvement +# +# SUBJECT is optional and one of 'dev', 'usr', 'pkg', 'test', 'doc' +# +# Is WHO is concerned by the change. +# +# 'dev' is for developpers (API changes, refactors...) +# 'usr' is for final users (UI changes) +# 'pkg' is for packagers (packaging changes) +# 'test' is for testers (test only related changes) +# 'doc' is for doc guys (doc only changes) +# +# COMMIT_MSG is ... well ... the commit message itself. +# +# TAGs are additionnal adjective as 'refactor' 'minor' 'cosmetic' +# +# 'refactor' is obviously for refactoring code only +# 'minor' is for a very meaningless change (a typo, adding a comment) +# 'cosmetic' is for cosmetic driven change (re-indentation, 80-col...) +# +# Example: +# +# new: usr: support of bazaar implemented +# chg: re-indentend some lines @cosmetic +# new: dev: updated code to be compatible with last version of killer lib. +# fix: pkg: updated year of licence coverage. +# new: test: added a bunch of test around user usability of feature X. +# fix: typo in spelling my name in comment. @minor +# +# Please note that multi-line commit message are supported, and only the +# first line will be considered as the "summary" of the commit message. So +# tags, and other rules only applies to the summary. The body of the commit +# message will be displayed in the changelog with minor reformating. + +# +# ``ignore_regexps`` is a line of regexps +# +# Any commit having its full commit message matching any regexp listed here +# will be ignored and won't be reported in the changelog. +# +ignore_regexps = [ + r'(?i)^(Merge pull request|Merge branch|Release|Update)', +] + + +# +# ``replace_regexps`` is a dict associating a regexp pattern and its replacement +# +# It will be applied to get the summary line from the full commit message. +# +# Note that you can provide multiple replacement patterns, they will be all +# tried. If None matches, the summary line will be the full commit message. +# +replace_regexps = { + # current format (ie: 'chg: dev: my commit msg @tag1 @tag2') + + r'^([cC]hg|[fF]ix|[nN]ew)\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n@]*)(@[a-z]+\s+)*$': + r'\4', +} + + +# ``section_regexps`` is a list of 2-tuples associating a string label and a +# list of regexp +# +# Commit messages will be classified in sections thanks to this. Section +# titles are the label, and a commit is classified under this section if any +# of the regexps associated is matching. +# +section_regexps = [ + ('New', [ + r'^[nN]ew\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$', + ]), + ('Changes', [ + r'^[cC]hg\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$', + ]), + ('Fix', [ + r'^[fF]ix\s*:\s*((dev|use?r|pkg|test|doc)\s*:\s*)?([^\n]*)$', + ]), + ('Other', None # Match all lines + ), + +] + +# ``body_split_regexp`` is a regexp +# +# Commit message body (not the summary) if existing will be split +# (new line) on this regexp +# +body_split_regexp = r'[\n-]' + + +# ``tag_filter_regexp`` is a regexp +# +# Tags that will be used for the changelog must match this regexp. +# +# tag_filter_regexp = r'^[0-9]+$' +tag_filter_regexp = r'^(?:[vV])?[0-9\.]+$' + + +# ``unreleased_version_label`` is a string +# +# This label will be used as the changelog Title of the last set of changes +# between last valid tag and HEAD if any. +unreleased_version_label = "%%version%% (unreleased)"