From 032428264107c4a17c33228d0237a34b1cc7be9f Mon Sep 17 00:00:00 2001 From: houxiang Date: Wed, 16 Dec 2015 14:30:46 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=AF=8F=E4=B8=AA=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E7=9A=84=E5=90=84=E4=B8=AA=E6=88=90=E5=91=98=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E6=8F=90=E4=BA=A4=E8=B4=A1=E7=8C=AE=E6=AC=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/gitlab/client/repositories.rb | 7 +++++ lib/tasks/project_commits_query.rake | 30 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 lib/tasks/project_commits_query.rake 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