Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-04-29 10:43:18 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-04-29 10:43:18 +0400
commita1704273ecd8809f918e5776f4bc27490169ae2a (patch)
tree56a087b6008342fe55e7e808224980db4f5bc7b5 /lib/gitlab/identifier.rb
parent348eb12598afb7f61b438da5e2240b709b17402f (diff)
Refactor post-receive worker
Diffstat (limited to 'lib/gitlab/identifier.rb')
-rw-r--r--lib/gitlab/identifier.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/gitlab/identifier.rb b/lib/gitlab/identifier.rb
new file mode 100644
index 00000000000..19cb5c38a53
--- /dev/null
+++ b/lib/gitlab/identifier.rb
@@ -0,0 +1,23 @@
+# Detect user based on identifier like
+# key-13 or user-36 or last commit
+module Gitlab
+ module Indentifier
+ def identify(identifier, project, newrev)
+ if identifier.blank?
+ # Local push from gitlab
+ email = project.repository.commit(newrev).author_email rescue nil
+ User.find_by_email(email) if email
+
+ 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
+ key_id = identifier.gsub("key-", "")
+ Key.find_by_id(key_id).try(:user)
+ end
+ end
+ end
+end