Refactor merge request merge service
* Add system note when user merges MR in same way as it closes it * Remove duplicating code
This commit is contained in:
parent
b55a0519ac
commit
ccdf08d80a
5 changed files with 16 additions and 20 deletions
|
@ -189,7 +189,9 @@ class MergeRequest < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def automerge!(current_user, commit_message = nil)
|
def automerge!(current_user, commit_message = nil)
|
||||||
MergeRequests::AutoMergeService.new.execute(self, current_user, commit_message)
|
MergeRequests::AutoMergeService.
|
||||||
|
new(target_project, current_user).
|
||||||
|
execute(self, commit_message)
|
||||||
end
|
end
|
||||||
|
|
||||||
def open?
|
def open?
|
||||||
|
|
|
@ -5,15 +5,16 @@ module MergeRequests
|
||||||
# mark merge request as merged and execute all hooks and notifications
|
# mark merge request as merged and execute all hooks and notifications
|
||||||
# Called when you do merge via GitLab UI
|
# Called when you do merge via GitLab UI
|
||||||
class AutoMergeService < BaseMergeService
|
class AutoMergeService < BaseMergeService
|
||||||
def execute(merge_request, current_user, commit_message)
|
def execute(merge_request, commit_message)
|
||||||
merge_request.lock_mr
|
merge_request.lock_mr
|
||||||
|
|
||||||
if Gitlab::Satellite::MergeAction.new(current_user, merge_request).merge!(commit_message)
|
if Gitlab::Satellite::MergeAction.new(current_user, merge_request).merge!(commit_message)
|
||||||
merge_request.merge
|
merge_request.merge
|
||||||
|
|
||||||
notification.merge_mr(merge_request, current_user)
|
notification_service.merge_mr(merge_request, current_user)
|
||||||
create_merge_event(merge_request, current_user)
|
create_merge_event(merge_request, current_user)
|
||||||
execute_project_hooks(merge_request)
|
create_note(merge_request)
|
||||||
|
execute_hooks(merge_request)
|
||||||
|
|
||||||
true
|
true
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,21 +1,10 @@
|
||||||
module MergeRequests
|
module MergeRequests
|
||||||
class BaseMergeService
|
class BaseMergeService < MergeRequests::BaseService
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def notification
|
|
||||||
NotificationService.new
|
|
||||||
end
|
|
||||||
|
|
||||||
def create_merge_event(merge_request, current_user)
|
def create_merge_event(merge_request, current_user)
|
||||||
EventCreateService.new.merge_mr(merge_request, current_user)
|
EventCreateService.new.merge_mr(merge_request, current_user)
|
||||||
end
|
end
|
||||||
|
|
||||||
def execute_project_hooks(merge_request)
|
|
||||||
if merge_request.project
|
|
||||||
hook_data = merge_request.to_hook_data(current_user)
|
|
||||||
merge_request.project.execute_hooks(hook_data, :merge_request_hooks)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,12 +6,14 @@ module MergeRequests
|
||||||
# Called when you do merge via command line and push code
|
# Called when you do merge via command line and push code
|
||||||
# to target branch
|
# to target branch
|
||||||
class MergeService < BaseMergeService
|
class MergeService < BaseMergeService
|
||||||
def execute(merge_request, current_user, commit_message)
|
def execute(merge_request, commit_message)
|
||||||
merge_request.merge
|
merge_request.merge
|
||||||
|
|
||||||
notification.merge_mr(merge_request, current_user)
|
binding.pry
|
||||||
|
notification_service.merge_mr(merge_request, current_user)
|
||||||
create_merge_event(merge_request, current_user)
|
create_merge_event(merge_request, current_user)
|
||||||
execute_project_hooks(merge_request)
|
create_note(merge_request)
|
||||||
|
execute_hooks(merge_request)
|
||||||
|
|
||||||
true
|
true
|
||||||
rescue
|
rescue
|
||||||
|
|
|
@ -32,7 +32,9 @@ module MergeRequests
|
||||||
|
|
||||||
|
|
||||||
merge_requests.uniq.select(&:source_project).each do |merge_request|
|
merge_requests.uniq.select(&:source_project).each do |merge_request|
|
||||||
MergeRequests::MergeService.new.execute(merge_request, @current_user, nil)
|
MergeRequests::MergeService.
|
||||||
|
new(merge_request.target_project, @current_user).
|
||||||
|
execute(merge_request, nil)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue