#changelog #multiple #merge #pull-request #requests #magically

app mergelog

Magically merge multiple changelog files into one

4 releases

new 0.2.0 Feb 19, 2025
0.1.2 Feb 19, 2025
0.1.1 Feb 19, 2025
0.1.0 Feb 19, 2025

#68 in Configuration

Download history

79 downloads per month

GPL-3.0 license

38KB
712 lines

mergelog

Code Style Badge cargo-deny badge Crates.io Version Crates.io License

[!CAUTION] mergelog only supports GitLab now, but adding GitHub should be trivial.

mergelog is a simple tool to combine changelog entries spread over multiple files into one, interactively inferring and resolving corresponding pull requests.

To get started, just run:

cargo install mergelog
mergelog my/changelog/directory

I'm demoing it on Spade, a programming langauge I contribute to:

https://github.com/user-attachments/assets/9d8bef51-0a6d-420e-860d-812dd872be87

Usage

Here's the full --help output:

Usage: mergelog <changelog_directory> [--repo <repo>] [--host <host>] [-s <section...>] [--config <config>]

Merges changelog files into a single changelog

Positional Arguments:
  changelog_directory
                    directory containing changelogs and a mergelog.toml

Options:
  --repo            link to the repository to resolve merge/pull requests at;
                    omit to infer from the current repo
  --host            the repository host; omit to infer from the repo URL
  -s, --section     changelog sections in order
  --config          path to optional config file
  --help, help      display usage information

Config

You can pass --config <path> or create a mergelog.toml in the current directory to configure the output further.

# example
sections = ["Added", ...]
format = "{item} [{link_short}]({link})"
short-links = false
  • If any --sections are passed on the CLI, they will override any given in the config.
  • The format option string-replaces the keys {link}, {link_short}, and {item}.
  • The short-links option is perhaps confusingly named; it extracts out the links into a list at the end, so you can use "{item} [{short_link}]" as your format, for example.

Dependencies

~17–29MB
~438K SLoC