diff options
author | Zeger-Jan van de Weg <mail@zjvandeweg.nl> | 2015-11-23 09:42:20 +0100 |
---|---|---|
committer | Zeger-Jan van de Weg <mail@zjvandeweg.nl> | 2015-11-23 10:11:54 +0100 |
commit | 8608c6325e19f529f7b43ff881c562d3a0114e1c (patch) | |
tree | acbc21c6603848b4157a2ec5cac11b279f11a5c6 /app/services/merge_requests/merge_when_build_succeeds_service.rb | |
parent | 53b285c9a8b7eec9ee10906ef519da376347b69e (diff) | |
download | gitlab-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.rb | 17 |
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) |