Add CHANGELOG.md to repository #5634
Replies: 4 comments 3 replies
-
@kyukhin Waiting for your approve, patch is on mailing list. |
Beta Was this translation helpful? Give feedback.
-
I wrote the proposal as part of our internal developers guideline (SOP), but it seems it worth to share it here too. Changelogs (proposal)Usual processLet's consider the example: a patchset contains several internal changes (some refactoring) and one user visible change (bugfix, new feature, behaviour change, new supported OS and so on). The commit that contains the user visible change should add a file of this kind: $ cat changelogs/unreleased/bitset-index-varbinary.md
## bugfix/core
* Bitset index now supports the varbinary type (gh-5392). The first part of the header is The second part may be Add a subcategory## feature/lua/http client Detailed descriptionYou may use full power of the GitHub Flavored Markdown syntax, but, please, keep the source readable for humans. Example of a detailed description: $ cat changelogs/unreleased/upstream-uri-password.md
## bugfix/replication
* Use empty password when a URI in `box.cfg{replication = <...>}` is like
`login@host:port`. gh-4605. The behaviour matches the net.box's one now.
Explicit `login:@host:port` was necessary before, otherwise a replica
displayed the following error:
> Missing mandatory field 'tuple' in request Leave a note to a release managerA valuable feature or a deliberate compatibility breakage may require an extra notice for a maintainer who will squash changelog entries into a a changelog file. Let's look on examples: $ cat changelogs/unreleased/stored-decimals.md
## feature/core
* Decimals can now be stored in spaces. The corresponding field type is
introduced: `decimal`. Decimal values are also allowed in the `scalar`,
`any`, and `number` fields. Decimal values can be indexed. gh-4333
<..details here..>
----
Notable change: stored and indexed decimals (and new 'decimal' field type). $ cat changelogs/unreleased/session-settings.md
## feature/sql
* **[Breaking change]** Introduce _session_settings service space as replacement
for PRAGMA keyword. gh-4511
<..details here..>
----
Breaking change: sql: PRAGMA keyword is replaced with _session_settings system
space. Generate changelog fileThis section is for a release manager. We should prepare a changelog file for a release before the release will be tagged. Let's do the following steps:
ReasoningWe want to provide description of changes that a release offers for our users. Not just We started with semi-automated process that crawls closed issues and requires a lot of manual work of a release manager to make the result useful for end users. So we decided to give more responsibility to developers and start to place the changelog entries in cover letters. A maintainer is responsible for placing the entry into a draft of a future release notes on GitHub's releases page. A release manager (together with maintainers and the documentation team) proof-reads the release notes before publishing a release. As a side result of this process, the changelog entries becomes a subject for review and so the experience about writing such documents is shared across the team. The situation becomes better, however this process have several annoying downsides:
So we start to look how to better store the changelogs right within the git repository. The idea appears several times, but the stopper was that if we'll keep the changelog within a file (just one file or one file per release, including an upcoming release), we'll get a conflict at almost any cherry-pick: as from a developer branch to master as well as from master to a release branch. The solution was suggested by the GitLab folks: just split changelog entries across files and squash them before a release. We follow the spirit of the Keep a Changelog idea, but we does not follow the proposed format precisely. It brings us ability to structurize the release notes in a way that better fit our wishes and hopefully will be most convenient for our users. |
Beta Was this translation helpful? Give feedback.
-
Now PR #5791 is pushed and changelogs are stored in the repository. |
Beta Was this translation helpful? Give feedback.
-
Alternative (changelog in a commit message): rpm-software-management/librepo@9e08de4 |
Beta Was this translation helpful? Give feedback.
-
Now workflow with changelog is following:
This method has following drawbacks:
The only drawback of using CHANGELOG.md is possible merge conflicts while backporting patch to older versions. However, taking into account append-only structure of CHANGELOG.md it shouldn't be really a problem.
Beta Was this translation helpful? Give feedback.
All reactions