Writing this up after discussion with @thcipriani and @Aklapper.
Problem: GitLab has a concept of commit templates. The default, especially for squashed MRs, is bad.
Docs:
https://gitlab.wikimedia.org/help/user/project/merge_requests/commit_templates
The default message for squashed commits, in its entirety:
%{title}This is just the title of the merge request, and it tends to lose nearly all of the information in commit bodies. This is a bad default. It results in a less useful history and discourages good commit message practices.
Proposed hack: Use gitlab-settings/configure-projects to set a better template.
It's possible to define custom commit message templates on, at least, a per project basis:
GitLab uses commit templates to create default messages for specific types of commits. These templates encourage commit messages to follow a particular format, or contain specific information. Users can override these templates when merging a merge request.
We could use the configure-projects script to set sensible defaults for all projects on the instance.
There's an %{all_commits} value available for everything in the merge request (up to 100 commits, anyway).
The projects API has:
"suggestion_commit_message": null, "merge_commit_template": null, "squash_commit_template": null,
Upstream alternatives: It would be ideal to instead get the default fixed upstream. Maybe this has already occurred to someone, but I haven't found anything yet.
I didn't find any existing issues under these searches:
- https://gitlab.com/gitlab-org/gitlab/-/issues/?sort=created_date&state=opened&search=default%20commit%20template%20squash&first_page_size=100
- https://gitlab.com/gitlab-org/gitlab/-/issues/?sort=created_date&state=opened&search=commit%20templates&first_page_size=100
I'll do some more looking or write an issue.