summaryrefslogtreecommitdiff
path: root/app/services/issuable_base_service.rb
diff options
context:
space:
mode:
authorChristian Couder <chriscool@tuxfamily.org>2019-08-15 05:43:33 +0200
committerChristian Couder <chriscool@tuxfamily.org>2019-09-04 12:11:24 +0200
commitf00db0c342d01b33617f269447ff76140944a86e (patch)
treee1def576ec2f00ce18272d17ee913d2a60d09bed /app/services/issuable_base_service.rb
parent60adc14473911fd9bd33feef2fbfd62a9824a11c (diff)
downloadgitlab-ce-f00db0c342d01b33617f269447ff76140944a86e.tar.gz
Support adding and removing labels w/ push opts
MergeRequests::PushOptionsHandlerService has been updated to allow adding and removing labels to a merge request using git push options. To create a new merge request and add 2 labels to it: git push -u origin -o merge_request.create \ -o merge_request.label="My label 1" \ -o merge_request.label="My label 2" To update an existing merge request and remove a label while adding a different label: git push -u origin -o merge_request.label="My added label" \ -o merge_request.unlabel="My removed label" Issue https://gitlab.com/gitlab-org/gitlab-ce/issues/64320
Diffstat (limited to 'app/services/issuable_base_service.rb')
-rw-r--r--app/services/issuable_base_service.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb
index 2ab6e88599f..71c86106f48 100644
--- a/app/services/issuable_base_service.rb
+++ b/app/services/issuable_base_service.rb
@@ -76,8 +76,17 @@ class IssuableBaseService < BaseService
end
def filter_labels
- params[:add_label_ids] = labels_service.filter_labels_ids_in_param(:add_label_ids) if params[:add_label_ids]
- params[:remove_label_ids] = labels_service.filter_labels_ids_in_param(:remove_label_ids) if params[:remove_label_ids]
+ if params[:add_label_ids]
+ params[:add_label_ids] = labels_service.filter_labels_ids_in_param(:add_label_ids)
+ elsif params[:add_labels]
+ params[:add_label_ids] = labels_service.find_or_create_by_titles(:add_labels).map(&:id)
+ end
+
+ if params[:remove_label_ids]
+ params[:remove_label_ids] = labels_service.filter_labels_ids_in_param(:remove_label_ids)
+ elsif params[:remove_labels]
+ params[:remove_label_ids] = labels_service.find_or_create_by_titles(:remove_labels).map(&:id)
+ end
if params[:label_ids]
params[:label_ids] = labels_service.filter_labels_ids_in_param(:label_ids)