QUIP 17: Change log creation
by Mitch Curtis
Details
- Number: 17
- Title: Change log creation
- Author: Mitch Curtis
- Status: Active
- Type: Process
- Post History: 037927.html
- Created: 25 August 2020
Overview
The Qt framework uses change logs as a means of informing users about
new features, important behavior changes, and bug fixes. Before each
release, a change log file is generated from the section of git commit
messages that start with the [ChangeLog] keyword.
Content
Do include: - Noteworthy features - Significant changes - Changes that affect many users - Changes that affect compatibility - Changes to information about third-party code (see QUIP-4)
Do not include:
- Fixes in tests
- Documentation fixes
- Pure code cleanup or refactoring
- Fixes for regressions introduced in not-yet-released commits
- Anything that is not relevant to users
Format
-
A
[ChangeLog]entry may span multiple lines and ends with an empty line. -
You may add more than one
[ChangeLog]entry, each in a separate paragraph, if there are several ways the change affects users. -
Each entry starts with a sequence of tags, each in square brackets, the first of which is
[ChangeLog].- If the Git repository contains multiple modules, use the module name
as a tag to indicate the area of the change, e.g.
[QtCore]. - Optionally specify a class or subtopic as an additional tag, e.g.:
[QtNetwork][QSslSocket] - Other common tags are:
[General][Important Behavior Changes][Potentially Source-Incompatible Changes][Deprecation Notices][Platform Specific Changes][Windows][macOS][Linux/XCB][Third-Party Code]
- If the Git repository contains multiple modules, use the module name
as a tag to indicate the area of the change, e.g.
-
After the tags, describe how the change impacts users of the relevant component.
- Try to integrate the ChangeLog entry into the surrounding commit message to avoid redundancy.
- If the change resolves a security issue, summarise the issue and mention any relevant CVE or kindred identifiers.
- The description should use either simple past (“Fixed …”) or be explicit about referring to the current state (“… does now …”).
- Make sure the entry is reasonably self-contained. If you fail to formulate a meaningful description, it’s probably not useful information to start with.
-
In summary, the entry should look like this:
[ChangeLog][module][class/topic] description of the really important change that was just made (on several lines).
Tools
The createchangelog tool in the
qtqa.git module is currently the
most feature-complete tool for change log creation. Documentation for it
can be found in its README under src/createchangelog.