README generated with Documatic.
Quickly generate changelogs
and release notes
by analysing your git history.
A tool written in python,
but works on any language.
in a terminal
in a git-enabled
and a changelog will be generated.
For advanced changelog generation,
you can use the Documatic API.
- python >= 3.8
- “good” commit messages
- Git version tags
Minimum python 3.8.
Project actively supports python 3.8,
clone the repository
pip install -e .
to package locally
pip install doculog.
Doculog works by reading git commit messages
and inferring what changes are being made.
It assumes that you are writing
your commit messages as actions:
e.g. “Add some feature”,
“Fix a particular bug”.
While it’s good practice to have the action
in the present,
doculog accepts past verbs.
See git best practices
for more information
on this git commit writing style.
doculog looks through a list
of expected verbs
(open an issue/contribute a PR if there are some missing!),
but the extended version
includes additional logic
for classifying commit message,
which allows you to be more lax
with your commit messages.
To generate a changelog
with a full feature-set,
doculog requires a (free)
Join the waitlist
for an API key
by signing up here.
Someone will be in touch with your API key.
In the meantime,
doculog works without an API key
(you just won’t have access to advanced features).
to load environment variables
stored in a
To use your API key,
in your project root directory
with the following fields:
DOCUMATIC_API_KEY = <your-api-key>
IMPORTANT: DO NOT ADD
.env TO VERSION CONTROL.
YOUR API KEY MUST BE KEPT SECRET.
Generate a Changelog
In a terminal,
from your git commit history,
or update an existing changelog.
The “Unreleased” section corresponds to updates
not attached to a version.
Each changelog update version
may contain the following sections:
Each section header will only appear
in the version
if it has at least one update.
doculog will overwrite changes made
to the “Unreleased” section
every time it is run,
however tagged versions are not overwritten.
you can manually edit
and add updates
to a version release.
Git commit parsing
The initial logic for generating a changelog
comes from reading
your git commit messages.
commit messages to begin with an imperitive verb,
and to written passively.
doculog parses the message for signalling words
Rename 'my_func' to 'my_awesome_func'
will get interpreted as a “Changed” feature.
'my_func' -> 'my_awesome_func'
Changelogs break down your project’s featureset
by each release.
doculog infers a release has been made
by reading the git tags of your project.
If you don’t have any git tags,
your changelog will only have an “Unreleased” section.
To make a git tag,
git tag -a v<MAJOR>-<MINOR>-<PATCH>
git push --tags to push to your remote);
This assumes you’re using semver
Note: not using semver or git tags to release your project?
Open an issue on the
detailing your method to get it supported
You can configure how
by adding a
|changelog||Name of changelog file generated. “.md” suffix added if not present.||No||CHANGELOG.md|
|project||The name of your project. Used to title the changelog||No||The name of your root project folder|
pyproject.toml file might be:
[tool.doculog] changelog = "CHANGELOG" project = "My Cool Project"
Read the contributing guide
for information on coding styles
pip install -r requirements-dev.txt
to get developer requirements.
||Linting and unit testing. Runs on every pull request|
I want more intelligent featureset generation. What can I do?
Request access to the free Documatic API
to generate a changelog
driven by machine learning.
Documatic on GitHub
to stay up to date
with the latest features
How do I get my API key?
Once you’ve joined the waitlist,
we will be in touch shortly
with your API key.
The changelog is great, but I want more!
Get in touch –
I’m not getting a complete changelog. What’s gone wrong?
Check that you have appropriate version tags
and commit messages.
If you have the advanced featureset
(i.e. have an API key)
then you will get better changelog updates
which don’t require you to follow
the commit process
If you’re still not getting good results,
please open a bug report.
Can I contribute to doculog?
and PRs of all shapes and sizes
See the developers
Licensed under GNU GPL3.
Please see the [LICENSE]
for terms in full.
Generated by Documatic.