diff options
author | Christian Couder <chriscool@tuxfamily.org> | 2019-08-15 05:43:33 +0200 |
---|---|---|
committer | Christian Couder <chriscool@tuxfamily.org> | 2019-09-04 12:11:24 +0200 |
commit | f00db0c342d01b33617f269447ff76140944a86e (patch) | |
tree | e1def576ec2f00ce18272d17ee913d2a60d09bed /app/services/issuable_base_service.rb | |
parent | 60adc14473911fd9bd33feef2fbfd62a9824a11c (diff) | |
download | gitlab-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.rb | 13 |
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) |