summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/workers/post_receive.rb9
-rwxr-xr-xlib/hooks/post-receive5
2 files changed, 8 insertions, 6 deletions
diff --git a/app/workers/post_receive.rb b/app/workers/post_receive.rb
index 4f4f69c4ece..bf14ab8d579 100644
--- a/app/workers/post_receive.rb
+++ b/app/workers/post_receive.rb
@@ -1,12 +1,15 @@
class PostReceive
@queue = :post_receive
- def self.perform(reponame, oldrev, newrev, ref, identifier)
- project = Project.find_by_path(reponame)
+ def self.perform(repo_path, oldrev, newrev, ref, identifier)
+ repo_path = repo_path.gsub(Gitlab.config.git_base_path, "")
+ repo_path = repo_path.gsub(/.git$/, "")
+
+ project = Project.find_with_namespace(repo_path)
return false if project.nil?
# Ignore push from non-gitlab users
- user = if identifier.eql? Gitlab.config.gitolite_admin_key
+ user = if identifier.eql? Gitlab.config.gitolite_admin_key
email = project.commit(newrev).author.email rescue nil
User.find_by_email(email) if email
elsif /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
diff --git a/lib/hooks/post-receive b/lib/hooks/post-receive
index 4a3ce372eb8..ebd9e1a028a 100755
--- a/lib/hooks/post-receive
+++ b/lib/hooks/post-receive
@@ -6,7 +6,6 @@
while read oldrev newrev ref
do
# For every branch or tag that was pushed, create a Resque job in redis.
- pwd=`pwd`
- reponame=`basename "$pwd" | sed s/\.git$//`
- env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostReceive\",\"args\":[\"$reponame\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}" > /dev/null 2>&1
+ repo_path=`pwd`
+ env -i redis-cli rpush "resque:gitlab:queue:post_receive" "{\"class\":\"PostReceive\",\"args\":[\"$repo_path\",\"$oldrev\",\"$newrev\",\"$ref\",\"$GL_USER\"]}" > /dev/null 2>&1
done