commit
15a03e1d87
4 changed files with 18 additions and 11 deletions
|
@ -21,7 +21,7 @@ module GitPush
|
||||||
|
|
||||||
# Close merge requests
|
# Close merge requests
|
||||||
mrs = self.merge_requests.opened.where(:target_branch => branch_name).all
|
mrs = self.merge_requests.opened.where(:target_branch => branch_name).all
|
||||||
mrs = mrs.select(&:last_commit).select { |mr| c_ids.include?(mr.last_commit.id) }
|
mrs = mrs.select(&:last_commit).select { |mr| c_ids.include?(mr.last_commit.id) }
|
||||||
mrs.each { |merge_request| merge_request.merge!(user.id) }
|
mrs.each { |merge_request| merge_request.merge!(user.id) }
|
||||||
|
|
||||||
true
|
true
|
||||||
|
@ -65,7 +65,7 @@ module GitPush
|
||||||
total_commits_count: push_commits_count
|
total_commits_count: push_commits_count
|
||||||
}
|
}
|
||||||
|
|
||||||
# For perfomance purposes maximum 20 latest commits
|
# For perfomance purposes maximum 20 latest commits
|
||||||
# will be passed as post receive hook data.
|
# will be passed as post receive hook data.
|
||||||
#
|
#
|
||||||
push_commits_limited.each do |commit|
|
push_commits_limited.each do |commit|
|
||||||
|
@ -86,16 +86,14 @@ module GitPush
|
||||||
|
|
||||||
|
|
||||||
# This method will be called after each post receive
|
# This method will be called after each post receive
|
||||||
# and only if autor_key_id present in gitlab.
|
# and only if user present in gitlab.
|
||||||
# All callbacks for post receive should be placed here
|
# All callbacks for post receive should be placed here
|
||||||
#
|
#
|
||||||
def trigger_post_receive(oldrev, newrev, ref, author_key_id)
|
def trigger_post_receive(oldrev, newrev, ref, user)
|
||||||
user = Key.find_by_identifier(author_key_id).user
|
|
||||||
|
|
||||||
# Create push event
|
# Create push event
|
||||||
self.observe_push(oldrev, newrev, ref, user)
|
self.observe_push(oldrev, newrev, ref, user)
|
||||||
|
|
||||||
# Close merged MR
|
# Close merged MR
|
||||||
self.update_merge_requests(oldrev, newrev, ref, user)
|
self.update_merge_requests(oldrev, newrev, ref, user)
|
||||||
|
|
||||||
# Execute web hooks
|
# Execute web hooks
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
class PostReceive
|
class PostReceive
|
||||||
@queue = :post_receive
|
@queue = :post_receive
|
||||||
|
|
||||||
def self.perform(reponame, oldrev, newrev, ref, author_key_id)
|
def self.perform(reponame, oldrev, newrev, ref, identifier)
|
||||||
project = Project.find_by_path(reponame)
|
project = Project.find_by_path(reponame)
|
||||||
return false if project.nil?
|
return false if project.nil?
|
||||||
|
|
||||||
# Ignore push from non-gitlab users
|
# Ignore push from non-gitlab users
|
||||||
return false unless Key.find_by_identifier(author_key_id)
|
if /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
|
||||||
|
return false unless user = User.find_by_email(identifier)
|
||||||
|
else
|
||||||
|
return false unless user = Key.find_by_identifier(identifier).try(:user)
|
||||||
|
end
|
||||||
|
|
||||||
project.trigger_post_receive(oldrev, newrev, ref, author_key_id)
|
project.trigger_post_receive(oldrev, newrev, ref, user)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,6 +7,11 @@ module Grack
|
||||||
user = User.find_by_email(email)
|
user = User.find_by_email(email)
|
||||||
return false unless user.try(:valid_password?, password)
|
return false unless user.try(:valid_password?, password)
|
||||||
|
|
||||||
|
# Set GL_USER env variable
|
||||||
|
ENV['GL_USER'] = email
|
||||||
|
# Pass Gitolite update hook
|
||||||
|
ENV['GL_BYPASS_UPDATE_HOOK'] = "true"
|
||||||
|
|
||||||
# Need this patch because the rails mount
|
# Need this patch because the rails mount
|
||||||
@env['PATH_INFO'] = @env['REQUEST_PATH']
|
@env['PATH_INFO'] = @env['REQUEST_PATH']
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do
|
||||||
project_root: GIT_HOST['base_path'],
|
project_root: GIT_HOST['base_path'],
|
||||||
upload_pack: GIT_HOST['upload_pack'],
|
upload_pack: GIT_HOST['upload_pack'],
|
||||||
receive_pack: GIT_HOST['receive_pack']
|
receive_pack: GIT_HOST['receive_pack']
|
||||||
}), at: '/:path', constraints: { path: /[\w-]+.git*/ }
|
}), at: '/:path', constraints: { path: /[\w-]+\.git/ }
|
||||||
|
|
||||||
#
|
#
|
||||||
# Help
|
# Help
|
||||||
|
|
Loading…
Reference in a new issue