Commit 876ca63f authored by Gabriel Mazetto's avatar Gabriel Mazetto

Validate with Git Hooks before accepting a merge request

parent 04bc1346
......@@ -197,6 +197,12 @@ class Projects::MergeRequestsController < Projects::ApplicationController
return
end
merge_request_service = MergeRequests::MergeService.new(@project, current_user, merge_params)
unless merge_request_service.hooks_validation_pass?(@merge_request)
@status = :failed
return
end
TodoService.new.merge_merge_request(merge_request, current_user)
@merge_request.update(merge_error: nil)
......
......@@ -28,6 +28,22 @@ module MergeRequests
end
end
def hooks_validation_pass?(merge_request)
git_hook = merge_request.project.git_hook
unless git_hook.commit_message_allowed?(params[:commit_message])
merge_request.update(merge_error: "Commit message does not follow the pattern '#{git_hook.commit_message_regex}'")
return false
end
unless git_hook.author_email_allowed?(current_user.email)
merge_request.update(merge_error: "Commit author's email '#{current_user.email}' does not follow the pattern '#{git_hook.author_email_regex}'")
return false
end
true
end
private
def commit
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment