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:
Dmitriy Zaporozhets 2015-01-06 16:24:47 -08:00
parent b55a0519ac
commit ccdf08d80a
5 changed files with 16 additions and 20 deletions

View file

@ -189,7 +189,9 @@ class MergeRequest < ActiveRecord::Base
end
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
def open?

View file

@ -5,15 +5,16 @@ module MergeRequests
# mark merge request as merged and execute all hooks and notifications
# Called when you do merge via GitLab UI
class AutoMergeService < BaseMergeService
def execute(merge_request, current_user, commit_message)
def execute(merge_request, commit_message)
merge_request.lock_mr
if Gitlab::Satellite::MergeAction.new(current_user, merge_request).merge!(commit_message)
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)
execute_project_hooks(merge_request)
create_note(merge_request)
execute_hooks(merge_request)
true
else

View file

@ -1,21 +1,10 @@
module MergeRequests
class BaseMergeService
class BaseMergeService < MergeRequests::BaseService
private
def notification
NotificationService.new
end
def create_merge_event(merge_request, current_user)
EventCreateService.new.merge_mr(merge_request, current_user)
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

View file

@ -6,12 +6,14 @@ module MergeRequests
# Called when you do merge via command line and push code
# to target branch
class MergeService < BaseMergeService
def execute(merge_request, current_user, commit_message)
def execute(merge_request, commit_message)
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)
execute_project_hooks(merge_request)
create_note(merge_request)
execute_hooks(merge_request)
true
rescue

View file

@ -32,7 +32,9 @@ module MergeRequests
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