2011-12-13 01:03:26 +01:00
|
|
|
class PostReceive
|
2012-01-04 00:42:14 +02:00
|
|
|
@queue = :post_receive
|
|
|
|
|
2012-07-02 16:44:45 +08:00
|
|
|
def self.perform(reponame, oldrev, newrev, ref, identifier)
|
2011-12-14 17:38:52 +01:00
|
|
|
project = Project.find_by_path(reponame)
|
|
|
|
return false if project.nil?
|
|
|
|
|
2012-02-29 23:04:09 +02:00
|
|
|
# Ignore push from non-gitlab users
|
2012-11-18 19:53:30 +02:00
|
|
|
user = if identifier.eql? Gitlab.config.gitolite_admin_key
|
2012-11-29 19:38:06 +04:00
|
|
|
email = project.commit(newrev).author.email rescue nil
|
|
|
|
User.find_by_email(email) if email
|
2012-11-18 19:53:30 +02:00
|
|
|
elsif /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
|
|
|
|
User.find_by_email(identifier)
|
2012-07-02 16:44:45 +08:00
|
|
|
else
|
2012-11-18 19:53:30 +02:00
|
|
|
Key.find_by_identifier(identifier).try(:user)
|
2012-07-02 16:44:45 +08:00
|
|
|
end
|
2012-11-18 19:53:30 +02:00
|
|
|
return false unless user
|
2012-02-29 23:04:09 +02:00
|
|
|
|
2012-07-02 16:44:45 +08:00
|
|
|
project.trigger_post_receive(oldrev, newrev, ref, user)
|
2011-12-13 01:03:26 +01:00
|
|
|
end
|
|
|
|
end
|