From f00db0c342d01b33617f269447ff76140944a86e Mon Sep 17 00:00:00 2001 From: Christian Couder Date: Thu, 15 Aug 2019 05:43:33 +0200 Subject: 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 --- app/services/issuable_base_service.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'app/services/issuable_base_service.rb') 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) -- cgit v1.2.1