# # 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)"