From d92e4830f78018b3a38bc448aaec4a045f4d3d62 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 7 Apr 2014 19:11:02 +0300 Subject: [PATCH] Allow people to remove source branch of fork project in MR --- app/controllers/projects/merge_requests_controller.rb | 10 +++++----- app/models/merge_request.rb | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index d6402dd..872b950 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -216,7 +216,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController end def allowed_to_merge? - allowed_to_push_code?(project) + allowed_to_push_code?(project, @merge_request.target_branch) end def invalid_mr @@ -225,17 +225,17 @@ class Projects::MergeRequestsController < Projects::ApplicationController end def allowed_to_remove_source_branch? - allowed_to_push_code?(@merge_request.source_project) && + allowed_to_push_code?(@merge_request.source_project, @merge_request.source_branch) && !@merge_request.disallow_source_branch_removal? end - def allowed_to_push_code?(project) - action = if project.protected_branch?(@merge_request.target_branch) + def allowed_to_push_code?(project, branch) + action = if project.protected_branch?(branch) :push_code_to_protected_branches else :push_code end - can?(current_user, action, @project) + can?(current_user, action, project) end end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 0decc77..1ec76db 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -210,7 +210,7 @@ class MergeRequest < ActiveRecord::Base end def disallow_source_branch_removal? - (source_project.root_ref? source_branch) || for_fork? + source_project.root_ref?(source_branch) || source_project.protected_branches.include?(source_branch) end def project -- libgit2 0.21.2