OSDN Git Service

Fix hooks for merge request which were accepted by web-interface
authorValeriy Sizov <vsv2711@gmail.com>
Sun, 18 Nov 2012 17:53:30 +0000 (19:53 +0200)
committerValeriy Sizov <vsv2711@gmail.com>
Sun, 18 Nov 2012 17:56:29 +0000 (19:56 +0200)
app/workers/post_receive.rb

index 5311ede..1012866 100644 (file)
@@ -6,11 +6,15 @@ class PostReceive
     return false if project.nil?
 
     # Ignore push from non-gitlab users
-    if /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
-      return false unless user = User.find_by_email(identifier)
+    user = if identifier.eql? Gitlab.config.gitolite_admin_key 
+      email = project.commit(newrev).author.email
+      User.find_by_email(email)
+    elsif /^[A-Z0-9._%a-z\-]+@(?:[A-Z0-9a-z\-]+\.)+[A-Za-z]{2,4}$/.match(identifier)
+      User.find_by_email(identifier)
     else
-      return false unless user = Key.find_by_identifier(identifier).try(:user)
+      Key.find_by_identifier(identifier).try(:user)
     end
+    return false unless user
 
     project.trigger_post_receive(oldrev, newrev, ref, user)
   end