diff options
author | Rémy Coutable <remy@rymai.me> | 2017-02-28 16:15:51 +0300 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-02-28 16:15:51 +0300 |
commit | 23c029829251a7a5cf5918a5dda8ad4d157f6ab2 (patch) | |
tree | 1b82ec33de9825d7684d6f2a9ab3b94f4dd8bdca | |
parent | a69aa3dad51d5e881b3c92f3ac09c689edc00ab3 (diff) | |
parent | 90666937a0967c422ca4b6009a30bdcd8a9e41ab (diff) |
Merge branch '28769-raise-custom-exception-in-all-methods-of-mergeservice-that-want-to-inform-the-user' into 'master'
Use exceptions for MergeService error handling
Closes #28769
See merge request !9576
-rw-r--r-- | app/services/merge_requests/merge_service.rb | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb index 3da1b657a41..fac3ac7a4c7 100644 --- a/app/services/merge_requests/merge_service.rb +++ b/app/services/merge_requests/merge_service.rb @@ -6,6 +6,8 @@ module MergeRequests # Executed when you do merge via GitLab UI # class MergeService < MergeRequests::BaseService + MergeError = Class.new(StandardError) + attr_reader :merge_request, :source def execute(merge_request) @@ -27,6 +29,8 @@ module MergeRequests success end end + rescue MergeError => e + log_merge_error(e.message, save_message_on_model: true) end private @@ -42,19 +46,13 @@ module MergeRequests commit_id = repository.merge(current_user, source, merge_request, options) - if commit_id - merge_request.update(merge_commit_sha: commit_id) - else - log_merge_error('Conflicts detected during merge', save_message_on_model: true) - false - end + raise MergeError, 'Conflicts detected during merge' unless commit_id + + merge_request.update(merge_commit_sha: commit_id) rescue GitHooksService::PreReceiveError => e - log_merge_error(e.message, save_message_on_model: true) - false + raise MergeError, e.message rescue StandardError => e - merge_request.update(merge_error: "Something went wrong during merge: #{e.message}") - log_merge_error(e.message) - false + raise MergeError, "Something went wrong during merge: #{e.message}" ensure merge_request.update(in_progress_merge_commit_sha: nil) end |