clmerge
Opinionated, simple changelog merger
Never rebase your CHANGELOG.md
again.
When submitting Pull Requests, only one file needs to be created in order to create a changelog entry.
The new changelog gets created using the clmerge
command and will be stored
as CHANGELOG.md
.
(You can also look at the changelog directory to see how it works.)
changelog
directoryclmerge
expects a changelog
directory in the current directory.
Inside it, the following files shall be placed:
header.md
(Optional): will be inserted at the topold.md
(Optional): will be appended at the endconfig.ron
(Optional): RON config fileEvery other file will be ignored.
Every directory inside changelog
is expected to be
a valid semver
version (e.g. 0.5.1
or 1.0.0-alpha
. Such a folder is called a "version directory".
Inside every version directory, an arbitrary number of category directories
can be placed (e.g. added
, removed
, changed
, fixed
).
In the final CHANGELOG.md
, all categories will start with a capital letter.
Inside the category directories, an arbitrary number of entries is expected.
The content of the files will be trimmed and concatenated, with \n
after every
entry.
File tree:
├── changelog
│ ├── 0.1.0
│ │ └── added
│ │ └── general.md
│ ├── 0.2.0
│ │ ├── added
│ │ │ ├── feature-bar.md
│ │ │ └── feature-baz.md
│ │ └── changed
│ │ └── foo.md
│ ├── header.md
│ └── old.md
└── CHANGELOG.md
header.md
:
```markdown
```
old.md
(your old CHANGELOG):
```markdown
This is the old Changelog
config.ron
:
text
(
// This will be used to insert links for `[#123]` entries
// `[#123]` becomes `[#123](https://github.com/user/repo/issues/123)`
pull_request_prefix: "https://github.com/user/repo/issues/",
)
feature-baz.md
:
markdown
* Added feature baz ([#123])
Output (CHANGELOG.md
):
```markdown
Foo::foo
This is the old Changelog
sh
cargo install clmerge
This project is dual-licensed under MIT / Apache-2.0.