diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-07-02 12:40:20 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-07-02 12:40:20 +0300 |
commit | 81d41c0f927f69d75937d3c8f757740e936ed6e9 (patch) | |
tree | a13b2a16ffbe775926e6e4723432bb031b37e291 /lib/api/repositories.rb | |
parent | 2e3818f14f1c8ac54f36c216082dcab0d5cce99a (diff) | |
download | gitlab-ce-81d41c0f927f69d75937d3c8f757740e936ed6e9.tar.gz |
Collect contributors info via API
Diffstat (limited to 'lib/api/repositories.rb')
-rw-r--r-- | lib/api/repositories.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/api/repositories.rb b/lib/api/repositories.rb index 459379ad30c..ace3283616a 100644 --- a/lib/api/repositories.rb +++ b/lib/api/repositories.rb @@ -160,7 +160,29 @@ module API get ':id/repository/contributors' do authorize! :download_code, user_project + contributors = {} + contributors + log = user_project.repository.graph_log + log.each do |entry| + email = entry[:author_email].to_s + + if contributors.has_key?(email) + contributors[email][:commits] += 1 + contributors[email][:additions] += entry[:additions] || 0 + contributors[email][:deletions] += entry[:deletions] || 0 + else + contributors[email] = { + email: email, + name: entry[:author_name], + commits: 1, + additions: entry[:additions] || 0, + deletions: entry[:deletions] || 0, + } + end + end + + contributors end end end |