Automated Changelog/release note generation

Overview

doculog

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. Once installed, simply run

doculog

in a terminal in a git-enabled project directory, and a changelog will be generated. For advanced changelog generation, you can use the Documatic API.

Getting started

Requirements

  • python >= 3.8
  • git
  • "good" commit messages
  • Git version tags

Minimum python 3.8. Project actively supports python 3.8, 3.9, 3.10. To install, clone the repository and run pip install -e . to package locally OR 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, imperitive tense, doculog accepts past verbs. See git best practices for more information on this git commit writing style. Standard 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.

API key

To generate a changelog with a full feature-set, doculog requires a (free) API key. 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).

doculog uses python-dotenv to load environment variables stored in a .env file. To use your API key, create a .env file in your project root directory with the following fields:

DOCUMATIC_API_KEY = 
   

   

IMPORTANT: DO NOT ADD .env TO VERSION CONTROL. YOUR API KEY MUST BE KEPT SECRET.

Generate a Changelog

In a terminal, run doculog to create a CHANGELOG.md 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: "Added", "Removed", "Deprecated", "Fixed", "Changed". Each section header will only appear in the version if it has at least one update. Note: doculog will overwrite changes made to the "Unreleased" section every time it is run, however tagged versions are not overwritten. Therefore, you can manually edit and add updates to a version release.

To get the best out of the changelog, read the concepts below for information on configuration, git commits and version tags.

Concepts

Git commit parsing

The initial logic for generating a changelog comes from reading your git commit messages. doculog expects commit messages to begin with an imperitive verb, and to written passively. doculog parses the message for signalling words and phrases.

E.g. Rename 'my_func' to 'my_awesome_func' will get interpreted as a "Changed" feature. Whereas 'my_func' -> 'my_awesome_func' will not.

Version tags

Changelogs break down your project's featureset by each release. Currently, 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, run git tag -a v - - (and git push --tags to push to your remote); This assumes you're using semver versioning system.

Note: not using semver or git tags to release your project? Open an issue on the doculog repo detailing your method to get it supported by doculog.

Configuration

You can configure how doculog runs by adding a tool.doculog section to pyproject.toml.

Field Purpose Required Default value
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
local If true, use a local sever for advanced features. Only used for project development No false

For example, your pyproject.toml file might be:

[tool.doculog]
changelog = "CHANGELOG"
project = "My Cool Project"

Developers

Read the contributing guide for information on coding styles and workflow.

Run pip install -r requirements-dev.txt to get developer requirements.

CI file Purpose
test.yml Linting and unit testing. Runs on every pull request

FAQ

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. Follow Documatic on GitHub and socials to stay up to date with the latest features and releases.

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 - [email protected].

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 so strictly. If you're still not getting good results, please open a bug report.

Can I contribute to doculog?

Absolutely: feature requests, bug fixes, bug reports and PRs of all shapes and sizes are welcome. See the developers section.

License

Licensed under GNU GPL3. Please see the [LICENSE] for terms in full.

Generated by Documatic.

Owner
Documatic
Documatic
Automatic certificate unpinning for Android apps

What is this? Script used to perform automatic certificate unpinning of an APK by adding a custom network security configuration that permits user-add

Antoine Neuenschwander 5 Jul 28, 2021
Empresas do Brasil (CNPJs)

Biblioteca em Python que coleta informações cadastrais de empresas do Brasil (CNPJ) obtidas de fontes oficiais (Receita Federal) e exporta para um formato legível por humanos (CSV ou JSON).

BR-API: Democratizando dados do Brasil. 8 Aug 17, 2022
Сервис служит прокси между cервисом регистрации ошибок платформы и системой сбора ошибок Sentry

Sentry Reg Service Сервис служит прокси между Cервисом регистрации ошибок платформы и системой сбора ошибок Sentry. Как развернуть Sentry onpremise. С

Ingvar Vilkman 13 May 24, 2022
CBLang is a programming language aiming to fix most of my problems with Python

CBLang A bad programming language made in Python. CBLang is a programming language aiming to fix most of my problems with Python (this means that you

Chadderbox 43 Dec 22, 2022
python's memory-saving dictionary data structure

ConstDict python代替的Dict数据结构 若字典不会增加字段,只读/原字段修改 使用ConstDict可节省内存 Dict()内存主要消耗的地方: 1、Dict扩容机制,预留内存空间 2、Dict也是一个对象,内部会动态维护__dict__,增加slot类属性可以节省内容 节省内存大小

Grenter 1 Nov 03, 2021
A python library what works with numbers.

pynum A python library what works with numbers. Prime Prime class have everithing you want about prime numbers. check_prime The check_prime method is

Mohammad Mahdi Paydar Puya 1 Jan 07, 2022
Sheet2export - FreeCAD macro to export spreadsheet

Description This is FreeCAD macro to export spreadsheet to file.

Darek L 3 Jul 09, 2022
Supply Chain will be a SAAS platfom to provide e-logistic facilites with most optimal

Shipp It Welcome To Supply Chain App [ Shipp It ] In "Shipp It" we are creating a full solution[web+app] for a entire supply chain from receiving orde

SAIKAT_CLAW 25 Dec 26, 2022
For Tok-k passages that have passed through the Bi-Encoder Retrival, ReRank is performed using CrossEncoder.

Cross-Encoder-with-Bi-Encoder For Tok-k passages that have passed through the Bi-Encoder Retrival, ReRank is performed using CrossEncoder. Data Data u

7 Feb 09, 2022
Clackety Keyboards Powered by Python

KMK: Clackety Keyboards Powered by Python KMK is a feature-rich and beginner-friendly firmware for computer keyboards written and configured in Circui

KMK Firmware 780 Jan 03, 2023
Inviare messaggi tramite app IO a partire da dati contenuti in file .csv

parlaConIO Inviare messaggi tramite app IO a partire da dati contenuti in file .csv -- Nessun obbligo, ma in caso di clonazione o uso del programma c

Francesco Del Castillo 6 Aug 22, 2022
Parser for the GeoSuite[tm] PRV export format

Parser for the GeoSuite[tm] PRV export format This library provides functionality to parse geotechnical investigation data in .prv files generated by

EMerald Geomodelling 1 Dec 17, 2021
Personal Finance Forecaster - An AI tool for forecasting personal expenses

Personal Finance Forecaster - An AI tool for forecasting personal expenses

2 Mar 09, 2022
Add your recently blog and douban states in your GitHub Profile

Add your recently blog and douban states in your GitHub Profile

Bingjie Yan 4 Dec 12, 2022
This bot uploads telegram files to MixDrop.co,File.io.

What is about this bot ? This bot uploads telegram files to MixDrop.co, File.io. Usage: Send any file, and the bot will upload it to MixDrop.co, File.

Abhijith NT 3 Feb 26, 2022
Converts a base copy of Pokemon BDSP's masterdatas into a more readable and editable Pokemon Showdown Format.

Showdown-BDSP-Converter Converts a base copy of Pokemon BDSP's masterdatas into a more readable and editable Pokemon Showdown Format. Download the lat

Alden Mo 2 Jan 02, 2022
Welcome to my pod transcript search webb app!

pod_transcript_search Welcome to the pod transcript search webb app! Tech stack used: Languages used: Python (for the back-end), JavaScript (for the f

3 Feb 04, 2022
Tool to automate the enumeration of a website (CTF)

had4ctf Tool to automate the enumeration of a website (CTF) DISCLAIMER: THE TOOL HAS BEEN DEVELOPED SOLELY FOR EDUCATIONAL PURPOSE ,I WILL NOT BE LIAB

Had 2 Oct 24, 2021
Snek-test - An operating system kernel made in python and assembly

pythonOS An operating system kernel made in python and assembly Wait what? It us

TechStudent10 2 Jan 25, 2022
Customizable-menu-python - User customizable menu in Python

Menu personalizável pelo usuário em Python A minha ideia com esse projeto pessoa

Renan Barbosa 4 Oct 28, 2022