diff --git a/lib/gitlab-cli/lib/gitlab/client/repositories.rb b/lib/gitlab-cli/lib/gitlab/client/repositories.rb index f489e5009..e56a740db 100644 --- a/lib/gitlab-cli/lib/gitlab/client/repositories.rb +++ b/lib/gitlab-cli/lib/gitlab/client/repositories.rb @@ -85,5 +85,12 @@ class Gitlab::Client get("/projects/#{project}/repository/commits/#{sha}/diff") end alias_method :repo_commit_diff, :commit_diff + + #Get the commits count of each contributor in a project + #@param [Integer] project the ID fo a project. + # @return [Gitlab::ObjectifiedHash] + def contributors(project) + get("/projects/#{project}/repository/contributors") + end end end diff --git a/lib/tasks/project_commits_query.rake b/lib/tasks/project_commits_query.rake new file mode 100644 index 000000000..df33419f3 --- /dev/null +++ b/lib/tasks/project_commits_query.rake @@ -0,0 +1,30 @@ +#coding=utf-8 + +namespace :gitlab do + desc "sync gitlab's users which lost in last sync" + task :query => :environment do + g = Gitlab.client + projects = Project.all + users_email = User.find_by_sql("select mail from users where mail != '' ") + projects.each do|project| + gpid = project.gpid + begin + contributors_list = g.contributors(gpid) + rescue + next + end + puts "project_id #{project.id}" + contributors_list.each do|contributor| + if users_email.include?(contributor.email) + contributors_list.delete(contributor) + end + end + + contributors_list.each do|contributor| + puts "name #{contributor.name}" + puts "email #{contributor.email}" + puts "commits_count #{contributor.commits}" + end + end + end +end \ No newline at end of file