• Stars
    star
    134
  • Rank 270,967 (Top 6 %)
  • Language
    Python
  • License
    ISC License
  • Created over 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Automatic Changelog generator using Jinja2 templates.

git-changelog

ci documentation pypi version gitpod gitter

Automatic Changelog generator using Jinja2 templates. From git logs to change logs.

Features

Installation

With pip:

pip install git-changelog

With pipx:

python3.8 -m pip install --user pipx
pipx install git-changelog

Usage (command-line)

usage: git-changelog [-b] [-h] [-i] [-g VERSION_REGEX] [-m MARKER_LINE]
                     [-o OUTPUT] [-r] [-R] [-I INPUT]
                     [-c {angular,conventional,basic}] [-s SECTIONS]
                     [-t {angular,keepachangelog}] [-T] [-E] [-v]
                     [REPOSITORY]

Automatic Changelog generator using Jinja2 templates.

This tool parses your commit messages to extract useful data
that is then rendered using Jinja2 templates, for example to
a changelog file formatted in Markdown.

Each Git tag will be treated as a version of your project.
Each version contains a set of commits, and will be an entry
in your changelog. Commits in each version will be grouped
by sections, depending on the commit convention you follow.

BASIC CONVENTION

Default sections:
- add: Added
- fix: Fixed
- change: Changed
- remove: Removed

Additional sections:
- merge: Merged
- doc: Documented

ANGULAR CONVENTION

Default sections:
- feat: Features
- fix: Bug Fixes
- revert: Reverts
- ref, refactor: Code Refactoring
- perf: Performance Improvements

Additional sections:
- build: Build
- chore: Chore
- ci: Continuous Integration
- deps: Dependencies
- doc, docs: Docs
- style: Style
- test, tests: Tests

CONVENTIONALCOMMIT CONVENTION

Default sections:
- feat: Features
- fix: Bug Fixes
- revert: Reverts
- ref, refactor: Code Refactoring
- perf: Performance Improvements

Additional sections:
- build: Build
- chore: Chore
- ci: Continuous Integration
- deps: Dependencies
- doc, docs: Docs
- style: Style
- test, tests: Tests

positional arguments:
  REPOSITORY            The repository path, relative or absolute. Default: .

options:
  -b, --bump-latest     Deprecated, use --bump=auto instead.
                        Guess the new latest version by bumping the previous
                        one based on the set of unreleased commits. For
                        example, if a commit contains breaking changes, bump
                        the major number (or the minor number for 0.x
                        versions). Else if there are new features, bump the
                        minor number. Else just bump the patch number.
                        Default: False.
  --bump VERSION        Specify the bump from latest version for the set
                        of unreleased commits. Can be one of 'auto',
                        'major', 'minor', 'patch' or a valid semver version
                        (eg. 1.2.3). With 'auto', if a commit contains breaking
                        changes, bump the major number (or the minor number
                        for 0.x versions), else if there are new features,
                        bump the minor number, else just bump the patch number.
                        Default: None.
  -Z, --no-zerover      By default, breaking changes on a 0.x don't bump the
                        major version, maintaining it at 0. With this option, a
                        breaking change will bump a 0.x version to 1.0.
  -h, --help            Show this help message and exit.
  -i, --in-place        Insert new entries (versions missing from changelog)
                        in-place. An output file must be specified. With
                        custom templates, you can pass two additional
                        arguments: --version-regex and --marker-line. When
                        writing in-place, an 'in_place' variable will be
                        injected in the Jinja context, allowing to adapt the
                        generated contents (for example to skip changelog
                        headers or footers). Default: False.
  -g, --version-regex VERSION_REGEX
                        A regular expression to match versions in the existing
                        changelog (used to find the latest release) when
                        writing in-place. The regular expression must be a
                        Python regex with a 'version' named group. Default:
                        ^## \[(?P<version>v?[^\]]+).
  -m, --marker-line MARKER_LINE
                        A marker line at which to insert new entries (versions
                        missing from changelog). If two marker lines are
                        present in the changelog, the contents between those
                        two lines will be overwritten (useful to update an
                        'Unreleased' entry for example). Default:
                        <!-- insertion marker -->.
  -o, --output OUTPUT   Output to given file. Default: stdout.
  -p {github,gitlab}, --provider {github,gitlab}
                        Explicitly specify the repository provider.
  -r, --parse-refs      Parse provider-specific references in commit messages
                        (GitHub/GitLab/Bitbucket issues, PRs, etc.). Default: False.
  -R, --release-notes   Output release notes to stdout based on the last entry
                        in the changelog. Default: False.
  -I, --input INPUT     Read from given file when creating release notes.
                        Default: CHANGELOG.md.
  -c, --style, --commit-style, --convention {angular,conventional,basic}
                        The commit convention to match against. Default:
                        basic.
  -s, --sections SECTIONS
                        A comma-separated list of sections to render. See the
                        available sections for each supported convention in
                        the description. Default: None.
  -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". Default: keepachangelog.
  -T, --trailers, --git-trailers
                        Parse Git trailers in the commit message. See
                        https://git-scm.com/docs/git-interpret-trailers.
                        Default: False.
  -E, --omit-empty-versions
                        Omit empty versions in the output. Default: False.
  -v, --version         Show the current version of the program and exit.

More Repositories

1

aria2p

Command-line tool and library to interact with an aria2c daemon process with JSON-RPC.
Python
471
star
2

docker-nginx-postgres-django-example

Example using Docker, Django, multiple Postgres databases, NginX, Gunicorn, pipenv, GitLab CI and tox.
Python
162
star
3

shell-history

Visualize your shell usage with Highcharts!
Python
110
star
4

markdown-exec

Utilities to execute code blocks in Markdown files.
Python
95
star
5

duty

A simple task runner.
Python
89
star
6

django-zxcvbn-password

Back-end and Front-end password validation with ZXCVBN
Python
86
star
7

copier-pdm

Copier template for Python projects managed by PDM.
Jinja
83
star
8

django-suit-dashboard

Create a dashboard within Django admin interface.
Python
83
star
9

copier-poetry

Copier template for Python projects managed by Poetry.
Jinja
79
star
10

awesome-repository

A curated list of services, tools and standards about (open source) repository management.
60
star
11

website

My personal website.
Python
46
star
12

cookiecutter-awesome

Cookiecutter to create an awesome list.
Python
41
star
13

shellman

Write documentation in comments and render it with templates.
Python
37
star
14

docker-nginx-auth-request-django-shiny-example

Example using Docker, Nginx with auth-request module, and Django acting as a authentication wrapper around a Shiny app.
Python
22
star
15

dependenpy

Show the inter-dependencies between modules of Python packages.
Python
22
star
16

mkdocs-coverage

MkDocs plugin to integrate your coverage HTML report into your site.
Python
21
star
17

mkdocs-spellcheck

A spell checker plugin for MkDocs.
Python
16
star
18

copier-uv

Copier template for Python projects managed by uv.
Jinja
16
star
19

django-appsettings

Application settings helper for Django apps.
Python
15
star
20

django-meerkat

Security audit tool for Django sites
JavaScript
14
star
21

archan

Analysis of your architecture strength based on DSM data.
Python
12
star
22

mkdocs-gallery

A gallery of MkDocs themes, showing off a few plugins and extensions.
Python
12
star
23

moving-stars

⭐ Copy GitHub stars to GitLab 🌠
Python
10
star
24

pawabot

A Telegram Bot for many things: aria2 management, torrent sites crawling, media organization with filebot and Plex.
Python
9
star
25

django-archan

A Django app that displays dependency matrices and other project architecture information
Python
9
star
26

cookie-poetry

Cookiecutter for Poetry projects.
Roff
8
star
27

pdm-multirun

A PDM plugin to run a command on multiple Python versions.
Python
8
star
28

failprint

Run a command, print its output only if it fails.
Python
8
star
29

neopy

Neo4j for Python. Manipulate graph data in Python with Neo4j as data storage.
Python
7
star
30

django-cerberus-ac

Django Cerberus Access Control, extended permission system.
JavaScript
7
star
31

ansito

Transform ANSI codes to any other format (currently only Conky style)
Python
7
star
32

stars

My stars on GitHub, grouped by language.
6
star
33

yore

Manage legacy code with comments.
Python
5
star
34

mkdocs-pygments

Highlighting themes for code blocks. Available to sponsors only.
Python
5
star
35

django-cs-models

A Django app that helps you creating models within a Complex System
Python
4
star
36

privibot

A Python library to add a privilege/permission system to your Telegram bot.
Python
4
star
37

shelldemo

Run a set of Bash commands as if typed by a robo- I mean, a person.
Shell
4
star
38

wps-light

The strictest and most opinionated python linter ever! (lighter fork)
Python
4
star
39

gestion-de-stock

Graphical UI in Qt for database management
C++
3
star
40

logan

Log analysis tool (alpha).
HTML
3
star
41

happy-path

Code and data flow visualization tool for Python. Available to sponsors only.
3
star
42

github-labels

The source of truth for labels in my GitHub projects.
2
star
43

rosetta-suit

Integration of django-rosetta into django-suit admin interface
HTML
2
star
44

suit-dashboard-demo

Demo site using django-suit-dashboard
Shell
2
star
45

fastapi-ref

API reference of FastAPI.
2
star
46

pawamoy.github.io

HTML
2
star
47

mvodb

Rename and move files using metadata from online databases.
Python
2
star
48

odoo-matrix

D3.js visualization for Odoo's inter-dependencies
Python
2
star
49

pypi-insiders

Self-hosted PyPI server with automatic updates for Insiders versions of projects. Only available to sponsors.
2
star
50

cookiecutter-cookiecutter

The cookiecutter that generated itself.
Python
1
star
51

django-access-control

Control how users access resources in your Django project
Python
1
star
52

mkdocs-manpage

MkDocs plugin to generate a manpage from the documentation site.
Python
1
star
53

pawamoy

My profile readme.
Shell
1
star
54

archan-pylint

Archan plugin for Pylint (number of messages per module).
Python
1
star
55

taskhub

[ALPHA] Task management tool, supporting import/export from/to different services, with multiple interfaces.
Python
1
star
56

cookiecutter-pypackage

Roff
1
star
57

Omnidia

Abstract elements manager (multimedia, data, stuff) in browser
HTML
1
star
58

mkdocs-logging

Logging utilities for MkDocs plugins.
Python
1
star
59

fulfill

Manage your project. Fulfill your duties.
Python
1
star
60

devboard

A development dashboard for your projects. Available to sponsors only.
1
star
61

keycut

A command line tool that helps you remembering ALL the numerous keyboard shortcuts of ALL your favorite programs
Python
1
star