1. 18 Jul, 2016 6 commits
    • Timothy Andrew's avatar
    • Timothy Andrew's avatar
      Don't ask the user to "merge this request manually". · 7bd7fab2
      Timothy Andrew authored
      1. If they are a developer with "Developers can Merge" switched on.
      7bd7fab2
    • Timothy Andrew's avatar
      Clean up `protected_branches.js.coffee` · 8206b2f4
      Timothy Andrew authored
      - Only send a param for the currently changed checkbox.
      - Have the controller use strong parameters correctly, so that the PATCH
        works as expected.
      8206b2f4
    • Timothy Andrew's avatar
      Refactor `Gitlab::GitAccess` · 5b8bbf77
      Timothy Andrew authored
      1. Don't use case statements for dispatch anymore. This leads to a lot
         of duplication, and makes the logic harder to follow.
      
      2. Remove duplicated logic.
      
          - For example, the `can_push_to_branch?` exists, but we also have a
            different way of checking the same condition within `change_access_check`.
      
          - This kind of duplication is removed, and the `can_push_to_branch?`
            method is used in both places.
      
      3. Move checks returning true/false to `UserAccess`.
      
          - All public methods in `GitAccess` now return an instance of
            `GitAccessStatus`. Previously, some methods would return
            true/false as well, which was confusing.
      
          - It makes sense for these kinds of checks to be at the level of a
            user, so the `UserAccess` class was repurposed for this. The prior
            `UserAccess.allowed?` classmethod is converted into an instance
            method.
      
          - All external uses of these checks have been migrated to use the
            `UserAccess` class
      
      4. Move the "change_access_check" into a separate class.
      
          - Create the `GitAccess::ChangeAccessCheck` class to run these
            checks, which are quite substantial.
      
          - `ChangeAccessCheck` returns an instance of `GitAccessStatus` as
            well.
      
      5. Break out the boolean logic in `ChangeAccessCheck` into `if/else`
         chains - this seems more readable.
      
      6. I can understand that this might look like overkill for !4892, but I
         think this is a good opportunity to clean it up.
      
          - http://martinfowler.com/bliki/OpportunisticRefactoring.html
      5b8bbf77
    • Timothy Andrew's avatar
      Enforce "developers can merge" during `pre-receive`. · 4c9e7972
      Timothy Andrew authored
      1. When a merge request is being merged, save the merge commit SHA in
         the `in_progress_merge_commit_sha` database column.
      
      2. The `pre-receive` hook looks for any locked (in progress) merge
         request with `in_progress_merge_commit_sha` matching the `newrev` it
         is passed.
      
      3. If it finds a matching MR, the merge is legitimate.
      
      4. Update `git_access_spec` to test the behaviour we added here. Also
         refactored this spec a bit to make it easier to add more contexts / conditions.
      4c9e7972
    • Mathias Vestergaard's avatar
      Added "developers can merge" setting to protected branches · 7cb3e72b
      Mathias Vestergaard authored
      - Cherry-picked from `mvestergaard:branch-protection-dev-merge`
      - https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4220
      7cb3e72b
  2. 15 Jul, 2016 25 commits
  3. 14 Jul, 2016 9 commits