More flexible branch-level access control
<!--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> - [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=488832) </details> <!--IssueSummary end--> <!--This template is a great use for issues that are feature::additions or technical tasks for larger issues.--> ### Proposal GitLab supports specifying roles/users who can merge or push to branches (a specific branch or multiple branches matching a wildcard) using the [protected branch](https://docs.gitlab.com/ee/user/project/repository/branches/protected.html) feature. ![image.png](/uploads/6bf77dd032514f2324bfad2e981853bc/image.png){width=922 height=315} A customer has a demand to specify more flexible branch-level access control. This includes the following. * Only the specific users/roles can read branches * Only the specific users/roles can perform force push, but others only can perform non-force push to branches * Only the specific users/roles can open merge request to/from branches * Other flexible access controls, such as those supported by [Gerrit](https://gerrit-review.googlesource.com/Documentation/access-control.html) Link to request (Internal): https://gitlab.zendesk.com/agent/tickets/566188
issue