2011-12-13 00:03:26 +00:00
class PostReceive
2013-01-09 05:14:05 +00:00
include Sidekiq :: Worker
2013-04-29 06:43:18 +00:00
include Gitlab :: Identifier
2012-01-03 22:42:14 +00:00
2013-01-09 05:14:05 +00:00
sidekiq_options queue : :post_receive
2014-09-02 07:58:54 +00:00
def perform ( repo_path , identifier , changes )
2013-02-11 17:16:59 +00: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 09:32:05 +00:00
else
2013-04-29 06:43:18 +00:00
log ( " 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 09:32:05 +00:00
end
2014-08-13 07:24:50 +00:00
repo_path . gsub! ( / \ .git$ / , " " )
2012-12-09 08:34:46 +00:00
repo_path . gsub! ( / ^ \/ / , " " )
2012-12-08 18:48:33 +00:00
project = Project . find_with_namespace ( repo_path )
2013-01-29 09:32:05 +00:00
if project . nil?
2013-04-29 06:43:18 +00:00
log ( " Triggered hook for non-existing project with full path \" #{ repo_path } \" " )
2013-01-29 09:32:05 +00:00
return false
end
2011-12-14 16:38:52 +00:00
2014-09-02 07:58:54 +00:00
changes = changes . lines if changes . kind_of? ( String )
2013-01-28 15:22:45 +00:00
2014-09-02 07:58:54 +00:00
changes . each do | change |
oldrev , newrev , ref = change . strip . split ( ' ' )
2012-02-29 21:04:09 +00:00
2014-09-02 07:58:54 +00:00
@user || = identify ( identifier , project , newrev )
unless @user
log ( " Triggered hook for non-existing user \" #{ identifier } \" " )
return false
end
if tag? ( ref )
GitTagPushService . new . execute ( project , @user , oldrev , newrev , ref )
else
GitPushService . new . execute ( project , @user , oldrev , newrev , ref )
end
2014-03-05 21:10:35 +00:00
end
2011-12-13 00:03:26 +00:00
end
2013-04-29 06:43:18 +00:00
def log ( message )
Gitlab :: GitLogger . error ( " POST-RECEIVE: #{ message } " )
end
2014-03-05 21:10:35 +00:00
private
def tag? ( ref )
! ! ( / refs \/ tags \/ (.*) / . match ( ref ) )
end
2011-12-13 00:03:26 +00:00
end