2011-12-12 19:03:26 -05:00
class PostReceive
2013-01-09 00:14:05 -05:00
include Sidekiq :: Worker
2012-01-03 17:42:14 -05:00
2013-01-09 00:14:05 -05:00
sidekiq_options queue : :post_receive
def perform ( repo_path , oldrev , newrev , ref , identifier )
2013-01-29 04:32:05 -05:00
2013-02-11 12:16:59 -05:00
if repo_path . start_with? ( Gitlab . config . gitlab_shell . repos_path . to_s )
repo_path . gsub! ( Gitlab . config . gitlab_shell . repos_path . to_s , " " )
2013-01-29 04:32:05 -05:00
else
2013-02-11 12:16:59 -05:00
Gitlab :: GitLogger . error ( " POST-RECEIVE: Check gitlab.yml config for correct gitlab_shell.repos_path variable. \" #{ Gitlab . config . gitlab_shell . repos_path } \" does not match \" #{ repo_path } \" " )
2013-01-29 04:32:05 -05:00
end
2012-12-09 03:34:46 -05:00
repo_path . gsub! ( / .git$ / , " " )
repo_path . gsub! ( / ^ \/ / , " " )
2012-12-08 13:48:33 -05:00
project = Project . find_with_namespace ( repo_path )
2013-01-29 04:32:05 -05:00
if project . nil?
Gitlab :: GitLogger . error ( " POST-RECEIVE: Triggered hook for non-existing project with full path \" #{ repo_path } \" " )
return false
end
2011-12-14 11:38:52 -05:00
2013-02-14 07:00:02 -05:00
user = if identifier . blank?
# Local push from gitlab
2013-01-28 10:22:45 -05:00
email = project . repository . commit ( newrev ) . author . email rescue nil
User . find_by_email ( email ) if email
2013-02-14 07:00:02 -05:00
elsif identifier =~ / \ Auser- \ d+ \ Z /
# git push over http
user_id = identifier . gsub ( " user- " , " " )
User . find_by_id ( user_id )
elsif identifier =~ / \ Akey- \ d+ \ Z /
# git push over ssh
2013-02-05 05:47:50 -05:00
key_id = identifier . gsub ( " key- " , " " )
Key . find_by_id ( key_id ) . try ( :user )
2013-01-28 10:22:45 -05:00
end
2013-02-04 09:19:37 -05:00
unless user
Gitlab :: GitLogger . error ( " POST-RECEIVE: Triggered hook for non-existing user \" #{ identifier } \" " )
return false
end
2012-02-29 16:04:09 -05:00
2013-02-25 14:21:38 -05:00
GitPushService . new . execute ( project , user , oldrev , newrev , ref )
2011-12-12 19:03:26 -05:00
end
end