Branch rules for merge methods and squash settings
## Problem to Solve Some organizations have different needs for the commit history depending on which branch they're merging into. They might want to keep all commits of features when merging into their develop branch, but then use a single merge commit when moving from develop to main. GitLab's current options don't provide this flexibility as only a single merge method can be supported per project. ## Proposal Configurations in projects have been moving to a branch based model via `Branch Rules`. We should support configuration of merge methods on per branch basis. This would allow organizations to ensure specific merge flows are ### Implementation Flow 1. Implement [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/1822) which will add a new merge strategy that squashes all the commits of an MR for merge without a merge commit. ### Additional Considerations 1. Merge train support - https://gitlab.com/gitlab-org/gitlab/-/issues/1822#note_2131640935 ### Alternative Proposal We could choose to modify the merge button to support multiple merge strategies for projects. This would provide a default (the project setting), but with the possibility for other options depending on what users want to do at the time of merge. This creates potentially more flexibility, and wouldn't preclude branch rules (less flexible), but might also be possible. <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> *This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.* <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
epic