Consider disallowing direct merges on GitHub in favor of 'evergreen merge' command or encourage developers to do it (e.g. by adding a noticeable warning).
Pros
- Direct merges are a source of errors like:
- Not squashing all commits
- Commit message missing required information or formatted incorrectly.
- Manual merging requires extra manual work and safeguards.
- Consistent and tested merge process for a sequence of PRs: two consecutive PRs can have a non-overlapping filesets but the changes can be conflicting or lead to errors. This can be resolved by syncing and testing before each merge.
Cons
- Automation can fail.
- Urgent merges can be too slow.
Exceptions
- A subset of engineers should have a superpower to do a direct merge for emergency or when automation fails. It should involve additional warnings so that it's not normally over-used.