diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-04-29 09:43:18 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-04-29 09:43:18 +0300 |
commit | a1704273ecd8809f918e5776f4bc27490169ae2a (patch) | |
tree | 56a087b6008342fe55e7e808224980db4f5bc7b5 /lib/gitlab/identifier.rb | |
parent | 348eb12598afb7f61b438da5e2240b709b17402f (diff) | |
download | gitlab-ce-a1704273ecd8809f918e5776f4bc27490169ae2a.tar.gz |
Refactor post-receive worker
Diffstat (limited to 'lib/gitlab/identifier.rb')
-rw-r--r-- | lib/gitlab/identifier.rb | 23 |
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 |