Commit 92039dd6 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Developers can merge MR if target branch is not protected

parent 33cd1ae9
...@@ -81,7 +81,8 @@ class MergeRequestsController < ProjectResourceController ...@@ -81,7 +81,8 @@ class MergeRequestsController < ProjectResourceController
end end
def automerge def automerge
return access_denied! unless can?(current_user, :accept_mr, @project) return access_denied! unless allowed_to_merge?
if @merge_request.opened? && @merge_request.can_be_merged? if @merge_request.opened? && @merge_request.can_be_merged?
@merge_request.should_remove_source_branch = params[:should_remove_source_branch] @merge_request.should_remove_source_branch = params[:should_remove_source_branch]
@merge_request.automerge!(current_user) @merge_request.automerge!(current_user)
...@@ -143,5 +144,18 @@ class MergeRequestsController < ProjectResourceController ...@@ -143,5 +144,18 @@ class MergeRequestsController < ProjectResourceController
# or from cache if already merged # or from cache if already merged
@commits = @merge_request.commits @commits = @merge_request.commits
@commits = CommitDecorator.decorate(@commits) @commits = CommitDecorator.decorate(@commits)
@allowed_to_merge = allowed_to_merge?
@show_merge_controls = @merge_request.opened? && @commits.any? && @allowed_to_merge
end
def allowed_to_merge?
action = if project.protected_branch?(@merge_request.target_branch)
:push_code_to_protected_branches
else
:push_code
end
can?(current_user, action, @project)
end end
end end
...@@ -91,7 +91,6 @@ class Ability ...@@ -91,7 +91,6 @@ class Ability
:admin_team_member, :admin_team_member,
:admin_merge_request, :admin_merge_request,
:admin_note, :admin_note,
:accept_mr,
:admin_wiki, :admin_wiki,
:admin_project :admin_project
] ]
......
...@@ -19,6 +19,8 @@ class GitPushService ...@@ -19,6 +19,8 @@ class GitPushService
# Collect data for this git push # Collect data for this git push
@push_data = post_receive_data(oldrev, newrev, ref) @push_data = post_receive_data(oldrev, newrev, ref)
create_push_event
project.ensure_satellite_exists project.ensure_satellite_exists
project.discover_default_branch project.discover_default_branch
...@@ -27,8 +29,6 @@ class GitPushService ...@@ -27,8 +29,6 @@ class GitPushService
project.execute_hooks(@push_data.dup) project.execute_hooks(@push_data.dup)
project.execute_services(@push_data.dup) project.execute_services(@push_data.dup)
end end
create_push_event
end end
# This method provide a sample data # This method provide a sample data
......
- unless can?(current_user, :accept_mr, @project) - unless @allowed_to_merge
.alert .alert
%strong Only masters can accept MR %strong You don't have enough permissions to merge this MR
- if @merge_request.opened? && @commits.any? && can?(current_user, :accept_mr, @project) - if @show_merge_controls
.automerge_widget.can_be_merged{style: "display:none"} .automerge_widget.can_be_merged{style: "display:none"}
.alert.alert-success .alert.alert-success
%span %span
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment