Automatic changelog generator. From git logs to change logs.
Table of contents
-
Jinja2 templates! You get full control over the rendering. Built-in Keep a Changelog and Angular templates (also see Conventional Changelog).
-
Commit styles/conventions parsing. Built-in Angular, Atom and basic styles.
-
Git service/provider agnostic, plus references parsing (issues, commits, etc.). Built-in GitHub and Gitlab support.
-
Understands Semantic Versioning: major/minor/patch for versions and commits. Guesses next version based on last commits.
-
Todo:
- Plugin architecture, to support more commit styles and git services.
- Template context injection, to furthermore customize how your changelog will be rendered.
- Easy access to "Breaking Changes" in the templates.
- Update changelog in-place, paired with commits/dates/versions range limitation ability.
git-changelog requires Python 3.6 or above.
To install Python 3.6, I recommend using pyenv
.
# install pyenv
git clone https://github.com/pyenv/pyenv ~/.pyenv
# setup pyenv (you should also put these three lines in .bashrc or similar)
export PATH="${HOME}/.pyenv/bin:${PATH}"
export PYENV_ROOT="${HOME}/.pyenv"
eval "$(pyenv init -)"
# install Python 3.6
pyenv install 3.6.8
# make it available globally
pyenv global system 3.6.8
With pip
:
python3.6 -m pip install git-changelog
With pipx
:
python3.6 -m pip install --user pipx
pipx install --python python3.6 git-changelog
usage: git-changelog [-h] [-o OUTPUT] [-s {angular,atom,basic}]
[-t {angular,keepachangelog}] [-v]
REPOSITORY
Command line tool for git-changelog Python package.
positional arguments:
REPOSITORY The repository path, relative or absolute.
optional arguments:
-h, --help Show this help message and exit.
-o OUTPUT, --output OUTPUT
Output to given file. Default: stdout.
-s {angular,atom,basic}, --style {angular,atom,basic}
The commit style to match against.
-t {angular,keepachangelog}, --template {angular,keepachangelog}
The Jinja2 template to use. Prefix with "path:" to
specify the path to a directory containing a file
named "changelog.md".
-v, --version Show the current version of the program and exit.