fix(ci): improve attribution of co-authors

Fix the `Co-authored-by` inclusion in commit messages so that co-authorship is properly expressed. Additionally, filter merge commits before unique authors. Previously, we would not attribute an author if their first commit in a PR was a merge commit. Finally, we remove superfluous newlines between the `Co-authored-by` lines.

Pull-Request: #4104.

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
This commit is contained in:
Maciej Zwoliński 2023-06-27 14:01:22 +02:00 committed by GitHub
parent 5c362fcab1
commit 41076f6acd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

16
.github/mergify.yml vendored
View File

@ -4,15 +4,19 @@ defaults:
method: squash
commit_message_template: |
{{ title }}
{{ body | get_section("## Description", "") }}
Pull-Request: #{{ number }}.
{# Here comes some fancy Jinja2 stuff for correctly attributing co-authorship: #}
{% for commit in (commits | unique(False, 'email_author')) | rejectattr("author", "==", author) %}
{% if commit.parents|length == 1 %}
Co-Authored-By: {{ commit.author }} <{{ commit.email_author }}>
{% endif %}
{%- set _ = 0 -%}
{%- for commit in commits -%}
{%- if commit.parents|length != 1 -%}
{%- set _ = commit.update({'merge': true}) -%}
{%- endif -%}
{%- endfor -%}
{%- for commit in (commits | rejectattr("merge") | unique(False, 'email_author')) | rejectattr("author", "==", author) -%}
Co-authored-by: {{ commit.author }} <{{ commit.email_author }}>
{% endfor %}
{# GitHub requires that the `Co-authored-by` lines are AT THE VERY END of a commit, hence nothing must come after this. #}