Generate Changelog#

generate-changelog does what it says: it generates a full changelog, or updates an existing one. Git tags and commits are the inputs by which generate-changelog performs its task.

The primary goal of this tool was to provide the benefits of conventional commits without requiring a strict syntax. generate-changelog accomplishes this using configurable regular expressions or commit metadata matching. The thought is natural language is easier for developers to remember and requires less tooling to enforce.

Features#

Commit and tag processing#

  • Filter out commits and tags based on regular expression matching.

  • Classify commit messages into sections such as “New”, “Fixes”, and “Changes” using configurable regular expressions, metadata, or custom criteria.

  • Rewrite commit summary or commit body using pipelines of actions.

  • Extract parts of the commit summary or body into metadata available for templates and filters.

  • Built-in issue parsers for Jira, GitHub, Azure DevOps Board.

  • Built-in conventional commit parser

Changelog rendering#

  • Templated using Jinja templates.

  • Each template has a large amount of metadata that allows linking to a commit, a version diff, and issue trackers.

  • Easily customize just the template you want.

  • Supports full or incremental changelog generation.

Release hints#

  • Can use user-defined rules to suggest a release type for use in another part of your CI pipeline.

Git support#

  • Supports your merge or rebase workflows and complicated git histories.

  • Supports of multi-authors for one commit through configurable trailers key values.

  • Built-in parser for turning trailers key values into metadata.

Requirements#

Python 3.7 or higher.

Installation#

$ pip install generate-changelog

Usage#

Create a default configuration file.

$ generate-changelog --generate-config

This creates a file named .changelog-config.yaml. You can make changes to the default configuration.

Generate your changelog via:

$ generate-changelog