Override squash settings with option to specify different overrides based on the source branch
<!--IssueSummary start-->
<details>
<summary>
Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards.
</summary>
- [Work on this issue](https://contributors.gitlab.com/manage-issue?action=work&projectId=278964&issueIid=504399)
- [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=504399)
</details>
<!--IssueSummary end-->
https://gitlab.com/gitlab-org/gitlab/-/issues/290042+ implements the ability to define `squash commit when merging` overrides for a protected branch. This allows the user to define what happens when we merge into the protected branch. However, the issue also describes a situation where a protected branch should have different overrides based on which branch is being merged into the protected branch
> * I need to be able to **merge** _between protected branches_ (even though I require squash from non-protected to protected branches) - which is a possibly-separate requirement captured in https://gitlab.com/gitlab-org/gitlab/-/issues/24452
> * because squashing between protected branches almost never makes sense (and merges between protected branches are a common thing in eg gitflow). the only time we should **require** squashing, is when merging from a non-protected branch to a protected branch
When the original issue has been implemented we might want to iterate and add a new mechanism to give even finer control
issue