summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-10-13 13:19:56 +0000
committerRémy Coutable <remy@rymai.me>2016-10-13 13:19:56 +0000
commitb3e989b057ff9cd1973f0927b4b0f0d28b1e0c6b (patch)
tree05fb4bf893259319bef3b229eb72724191b3ac29
parent2362dfee686ab715ef6a3bd00b389ab321e7a728 (diff)
parent3c476ee62512a0642ca3e5e6b228f9abdd867a34 (diff)
downloadgitlab-ce-b3e989b057ff9cd1973f0927b4b0f0d28b1e0c6b.tar.gz
Merge branch '23234-deleting-a-milestone-removes-source-branch-deletion-options-of-associated-merge-requests' into 'master'
Maintain "force_remove_source_branch" options on Merge Request unless specified ## What does this MR do? Fixes a problem where Merge Requests were losing the state associated with the flag to remove the source branch upon merge * Closes #23234 * Closes #23191 * Closes #19351 See merge request !6817
-rw-r--r--CHANGELOG1
-rw-r--r--app/services/merge_requests/update_service.rb5
-rw-r--r--spec/services/merge_requests/update_service_spec.rb12
3 files changed, 17 insertions, 1 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 4b1ac9d2c3c..4de2069b9f8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -33,6 +33,7 @@ v 8.13.0 (unreleased)
- Update Gitlab Shell to fix some problems with moving projects between storages
- Cache rendered markdown in the database, rather than Redis
- Avoid database queries on Banzai::ReferenceParser::BaseParser for nodes without references
+ - Do not alter 'force_remove_source_branch' options on MergeRequest unless specified
- Simplify Mentionable concern instance methods
- API: Ability to retrieve version information (Robert Schilling)
- Fix permission for setting an issue's due date
diff --git a/app/services/merge_requests/update_service.rb b/app/services/merge_requests/update_service.rb
index 9dbec49d163..a37cc3fdf21 100644
--- a/app/services/merge_requests/update_service.rb
+++ b/app/services/merge_requests/update_service.rb
@@ -15,7 +15,10 @@ module MergeRequests
params.except!(:target_branch, :force_remove_source_branch)
end
- merge_request.merge_params['force_remove_source_branch'] = params.delete(:force_remove_source_branch)
+ if params[:force_remove_source_branch].present?
+ merge_request.merge_params['force_remove_source_branch'] = params.delete(:force_remove_source_branch)
+ end
+
handle_wip_event(merge_request)
update(merge_request)
end
diff --git a/spec/services/merge_requests/update_service_spec.rb b/spec/services/merge_requests/update_service_spec.rb
index fd5f94047c2..2433a7dad06 100644
--- a/spec/services/merge_requests/update_service_spec.rb
+++ b/spec/services/merge_requests/update_service_spec.rb
@@ -105,6 +105,18 @@ describe MergeRequests::UpdateService, services: true do
expect(note).not_to be_nil
expect(note.note).to eq 'Target branch changed from `master` to `target`'
end
+
+ context 'when not including source branch removal options' do
+ before do
+ opts.delete(:force_remove_source_branch)
+ end
+
+ it 'maintains the original options' do
+ update_merge_request(opts)
+
+ expect(@merge_request.merge_params["force_remove_source_branch"]).to eq("1")
+ end
+ end
end
context 'todos' do