libp2p / rust-libp2p

The Rust Implementation of the libp2p networking stack.
https://libp2p.io
MIT License
4.48k stars 928 forks source link

ci: rework commit message template #4152

Open thomaseizinger opened 1 year ago

thomaseizinger commented 1 year ago

Once mergify exposes co-authorship as a first-class attribute (see https://github.com/Mergifyio/mergify/discussions/5091), we should work on our commit message template again.

In particular, we have the following requirements:

  1. There must not be any empty lines between any of the trailers for git interpret-trailers to work correctly.
  2. Each trailer must be on a separate line.

This presents a bit of a challenge that I'd like to document here. For one, to save on characters in the commit message title, we want to link to the pull-request via a trailer, like so: Pull-request: #XYZ. This would be error-prone to do manually so this should done automatically in the template. As a result, we will always have at least one trailer!

To automatically close issues or link to related ones, we often use the Resolves: #XYZ or Related: #XYZ trailer. Here comes the tricky bit:

Can we write a Jinja2 template that always correctly generates the trailers? I think we might have to create a separate section in our pull-request template for handwritten trailers. This section would be inserted without newlines in the commit message whereas the main ## Description section would be unconditionally separated with a newline from the trailers.

thomaseizinger commented 1 year ago

This seems to now be implemented: https://docs.mergify.com/configuration/#data-type-commit-author