summaryrefslogtreecommitdiff
path: root/app/services/merge_requests/merge_when_build_succeeds_service.rb
diff options
context:
space:
mode:
authorZeger-Jan van de Weg <mail@zjvandeweg.nl>2015-11-23 09:42:20 +0100
committerZeger-Jan van de Weg <mail@zjvandeweg.nl>2015-11-23 10:11:54 +0100
commit8608c6325e19f529f7b43ff881c562d3a0114e1c (patch)
treeacbc21c6603848b4157a2ec5cac11b279f11a5c6 /app/services/merge_requests/merge_when_build_succeeds_service.rb
parent53b285c9a8b7eec9ee10906ef519da376347b69e (diff)
downloadgitlab-ce-8608c6325e19f529f7b43ff881c562d3a0114e1c.tar.gz
Refactor MergeWhenBuildSucceedsService and incorporate feedback
Diffstat (limited to 'app/services/merge_requests/merge_when_build_succeeds_service.rb')
-rw-r--r--app/services/merge_requests/merge_when_build_succeeds_service.rb17
1 files changed, 16 insertions, 1 deletions
diff --git a/app/services/merge_requests/merge_when_build_succeeds_service.rb b/app/services/merge_requests/merge_when_build_succeeds_service.rb
index d5cae2f98f7..15dcace5dfb 100644
--- a/app/services/merge_requests/merge_when_build_succeeds_service.rb
+++ b/app/services/merge_requests/merge_when_build_succeeds_service.rb
@@ -1,5 +1,7 @@
module MergeRequests
class MergeWhenBuildSucceedsService < MergeRequests::BaseService
+ # Marks the passed `merge_request` to be marked when the build succeeds or
+ # updates the params for the automatic merge
def execute(merge_request)
merge_request.merge_params.merge!(params)
@@ -14,10 +16,11 @@ module MergeRequests
merge_request.save
unless already_approved
- SystemNoteService.merge_when_build_succeeds(merge_request, @project, @current_user)
+ SystemNoteService.merge_when_build_succeeds(merge_request, @project, @current_user, merge_request.ci_commit)
end
end
+ # Triggers the automatic merge of merge_request once the build succeeds
def trigger(build)
merge_requests = merge_request_from(build)
@@ -31,6 +34,18 @@ module MergeRequests
end
end
+ # Cancels the automatic merge
+ def cancel(merge_request)
+ if merge_request.merge_when_build_succeeds? && merge_request.open? && !merge_request.merged?
+ merge_request.reset_merge_when_build_succeeds
+ SystemNoteService.cancel_merge_when_build_succeeds(merge_request, @project, @current_user)
+
+ success
+ else
+ error("Can't cancel the automatic merge", 406)
+ end
+ end
+
private
def merge_request_from(build)