summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-02-28 13:15:51 +0000
committerRémy Coutable <remy@rymai.me>2017-02-28 13:15:51 +0000
commit23c029829251a7a5cf5918a5dda8ad4d157f6ab2 (patch)
tree1b82ec33de9825d7684d6f2a9ab3b94f4dd8bdca
parenta69aa3dad51d5e881b3c92f3ac09c689edc00ab3 (diff)
parent90666937a0967c422ca4b6009a30bdcd8a9e41ab (diff)
downloadgitlab-ce-23c029829251a7a5cf5918a5dda8ad4d157f6ab2.tar.gz
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.rb20
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