2014-09-02 18:07:02 +05:30
class PostReceive
include Sidekiq :: Worker
sidekiq_options queue : :post_receive
2015-04-26 12:48:37 +05:30
def perform ( repo_path , identifier , changes )
2014-09-02 18:07:02 +05:30
if repo_path . start_with? ( Gitlab . config . gitlab_shell . repos_path . to_s )
repo_path . gsub! ( Gitlab . config . gitlab_shell . repos_path . to_s , " " )
else
log ( " Check gitlab.yml config for correct gitlab_shell.repos_path variable. \" #{ Gitlab . config . gitlab_shell . repos_path } \" does not match \" #{ repo_path } \" " )
end
2016-06-02 11:05:42 +05:30
post_received = Gitlab :: GitPostReceive . new ( repo_path , identifier , changes )
2014-09-02 18:07:02 +05:30
2016-06-02 11:05:42 +05:30
if post_received . project . nil?
2014-09-02 18:07:02 +05:30
log ( " Triggered hook for non-existing project with full path \" #{ repo_path } \" " )
return false
end
2016-06-02 11:05:42 +05:30
if post_received . wiki?
# Nothing defined here yet.
elsif post_received . regular_project?
process_project_changes ( post_received )
else
log ( " Triggered hook for unidentifiable repository type with full path \" #{ repo_path } \" " )
false
end
end
2014-09-02 18:07:02 +05:30
2016-06-02 11:05:42 +05:30
def process_project_changes ( post_received )
post_received . changes . each do | change |
2015-04-26 12:48:37 +05:30
oldrev , newrev , ref = change . strip . split ( ' ' )
2014-09-02 18:07:02 +05:30
2016-06-02 11:05:42 +05:30
@user || = post_received . identify ( newrev )
2015-04-26 12:48:37 +05:30
unless @user
2016-06-02 11:05:42 +05:30
log ( " Triggered hook for non-existing user \" #{ post_received . identifier } \" " )
2015-04-26 12:48:37 +05:30
return false
end
if Gitlab :: Git . tag_ref? ( ref )
2016-06-02 11:05:42 +05:30
GitTagPushService . new ( post_received . project , @user , oldrev : oldrev , newrev : newrev , ref : ref ) . execute
elsif Gitlab :: Git . branch_ref? ( ref )
GitPushService . new ( post_received . project , @user , oldrev : oldrev , newrev : newrev , ref : ref ) . execute
2015-04-26 12:48:37 +05:30
end
2014-09-02 18:07:02 +05:30
end
end
2016-06-02 11:05:42 +05:30
private
2014-09-02 18:07:02 +05:30
2015-04-26 12:48:37 +05:30
def log ( message )
Gitlab :: GitLogger . error ( " POST-RECEIVE: #{ message } " )
2014-09-02 18:07:02 +05:30
end
end