summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-07-04 11:26:15 +0000
committerRémy Coutable <remy@rymai.me>2017-07-04 11:26:15 +0000
commitf7e7e40daf335570747b6f8893a63f1e9c91657a (patch)
treeb303136ba22c9b539d2f8437b7bf09a4aa03f21d
parent75ac425c94d1763088040ff526b590f5ffe03f85 (diff)
parente0f106ae97334d622c6eb7580e72e17181fddd6e (diff)
downloadgitlab-ce-f7e7e40daf335570747b6f8893a63f1e9c91657a.tar.gz
Merge branch 'tc-no-delete-protected-merged-branches' into 'master'
DeleteMergedBranchesService should not delete protected branches Closes #34553 See merge request !12624
-rw-r--r--app/services/delete_merged_branches_service.rb2
-rw-r--r--changelogs/unreleased/tc-no-delete-protected-merged-branches.yml4
-rw-r--r--spec/services/delete_merged_branches_service_spec.rb8
3 files changed, 14 insertions, 0 deletions
diff --git a/app/services/delete_merged_branches_service.rb b/app/services/delete_merged_branches_service.rb
index 3b611588466..5c9e2a16c71 100644
--- a/app/services/delete_merged_branches_service.rb
+++ b/app/services/delete_merged_branches_service.rb
@@ -10,6 +10,8 @@ class DeleteMergedBranchesService < BaseService
branches = branches.select { |branch| project.repository.merged_to_root_ref?(branch) }
# Prevent deletion of branches relevant to open merge requests
branches -= merge_request_branch_names
+ # Prevent deletion of protected branches
+ branches -= project.protected_branches.pluck(:name)
branches.each do |branch|
DeleteBranchService.new(project, current_user).execute(branch)
diff --git a/changelogs/unreleased/tc-no-delete-protected-merged-branches.yml b/changelogs/unreleased/tc-no-delete-protected-merged-branches.yml
new file mode 100644
index 00000000000..663a0349bac
--- /dev/null
+++ b/changelogs/unreleased/tc-no-delete-protected-merged-branches.yml
@@ -0,0 +1,4 @@
+---
+title: Do not delete protected branches when deleting all merged branches
+merge_request: 12624
+author:
diff --git a/spec/services/delete_merged_branches_service_spec.rb b/spec/services/delete_merged_branches_service_spec.rb
index cae74df9c90..fe21ca0b3cb 100644
--- a/spec/services/delete_merged_branches_service_spec.rb
+++ b/spec/services/delete_merged_branches_service_spec.rb
@@ -24,6 +24,14 @@ describe DeleteMergedBranchesService, services: true do
expect(project.repository.branch_names).to include('master')
end
+ it 'keeps protected branches' do
+ create(:protected_branch, project: project, name: 'improve/awesome')
+
+ service.execute
+
+ expect(project.repository.branch_names).to include('improve/awesome')
+ end
+
context 'user without rights' do
let(:user) { create(:user) }