• Timothy Andrew's avatar
    Use `Gitlab::Access` to protected branch access levels. · 0a8aeb46
    Timothy Andrew authored
    1. It makes sense to reuse these constants since we had them duplicated
       in the previous enum implementation. This also simplifies our
       `check_access` implementation, because we can use
       `project.team.max_member_access` directly.
    
    2. Use `accepts_nested_attributes_for` to create push/merge access
       levels. This was a bit fiddly to set up, but this simplifies our code
       by quite a large amount. We can even get rid of
       `ProtectedBranches::BaseService`.
    
    3. Move API handling back into the API (previously in
       `ProtectedBranches::BaseService#translate_api_params`.
    
    4. The protected branch services now return a `ProtectedBranch` rather
       than `true/false`.
    
    5. Run `load_protected_branches` on-demand in the `create` action, to
       prevent it being called unneccessarily.
    
    6. "Masters" is pre-selected as the default option for "Allowed to Push"
       and "Allowed to Merge".
    
    7. These changes were based on a review from @rymai in !5081.
    0a8aeb46