From ef74d8d95693e50f4f69444c16c1680f27a5c119 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 10 Nov 2015 15:31:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BB=BB=E5=8A=A1--=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E7=94=A8=E6=88=B7=E5=90=8C=E6=AD=A5=E4=B8=8D=E6=88=90?= =?UTF-8?q?=E5=8A=9F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/gitlab_to_git.rake | 22 ----------- lib/tasks/sync_gitlab_user.rake | 39 +++++++++++++++++++ lib/trustie/gitlab/helper.rb | 68 ++++++++++++++++----------------- 3 files changed, 73 insertions(+), 56 deletions(-) delete mode 100644 lib/tasks/gitlab_to_git.rake create mode 100644 lib/tasks/sync_gitlab_user.rake diff --git a/lib/tasks/gitlab_to_git.rake b/lib/tasks/gitlab_to_git.rake deleted file mode 100644 index c7b97e00d..000000000 --- a/lib/tasks/gitlab_to_git.rake +++ /dev/null @@ -1,22 +0,0 @@ -#coding=utf-8 - -namespace :rep_fault do - desc "set ossean's type value" - task :rep_update => :environment do - rep = Repository.find(400) - rep.type = "Repository::Git" - rep.save - end - - desc "forge and ossean's members" - task :sync_members => :environment do - projects = [] - projects << Project.where("id =? ",2) - projects << Project.where("id =? ",299) - puts projects - s = Trustie::Gitlab::Sync.new - projects.each do |project| - s.only_members(project.first) - end - end -end \ No newline at end of file diff --git a/lib/tasks/sync_gitlab_user.rake b/lib/tasks/sync_gitlab_user.rake new file mode 100644 index 000000000..c932ca36c --- /dev/null +++ b/lib/tasks/sync_gitlab_user.rake @@ -0,0 +1,39 @@ +#coding=utf-8 + +namespace :gitlab do + desc "sync gitlab's users which lost in last sync" + task :add_gid => :environment do + users = User.find_by_sql("select * from users where gid is null") + s = Trustie::Gitlab::Sync.new + g = Gitlab.client + users.each do |user| + us = g.get("/users?search=#{user.mail}") + puts user.mail + if us.blank? + puts "55555555555555555" + s.sync_user(user) + else + # 解决查询的时候出现多值的情况,比如:123@163.com和g123@163.com + puts "66666666666666666666" + puts user.id + if Array === us + us.each do |u| + if u.email == user.mail + user.gid = u.id + user.save + end + end + end + end + end + end + + task :sync_members => :environment do + projects = Project.all + s = Trustie::Gitlab::Sync.new + projects.each do |project| + puts project.id + s.only_members(project.first) + end + end +end \ No newline at end of file diff --git a/lib/trustie/gitlab/helper.rb b/lib/trustie/gitlab/helper.rb index 57c333875..61c1fbd17 100644 --- a/lib/trustie/gitlab/helper.rb +++ b/lib/trustie/gitlab/helper.rb @@ -3,46 +3,46 @@ module Trustie module Gitlab module Helper - def change_password(uid, en_pwd, salt) - return unless uid - options = {:encrypted_password=>en_pwd, :password_salt=>salt} - self.g.put("/users/ext/#{uid}", :body => options) - # g.edit_user(uid, :encrypted_password=>en_pwd, :password_salt=>salt) - end + def change_password(uid, en_pwd, salt) + return unless uid + options = {:encrypted_password=>en_pwd, :password_salt=>salt} + self.g.put("/users/ext/#{uid}", :body => options) + # g.edit_user(uid, :encrypted_password=>en_pwd, :password_salt=>salt) + end - def find_user(user) - us = self.g.get("/users?search=#{user.mail}") - if Array === us - us.each do |u| - return u if u.email == user.mail - end + def find_user(user) + us = self.g.get("/users?search=#{user.mail}") + if Array === us + us.each do |u| + return u if u.email == user.mail end - return nil end + return nil + end - def add_user(user) - u = nil - begin - u = find_user(user) - unless u - u = self.g.create_user(user.mail, - user.hashed_password, - name: user.show_name, - username: user.login, - confirm: "true") - user.gid = u.id - end - change_password(u.id, user.hashed_password, user.salt) - rescue => e - puts e - end - return u + def add_user(user) + u = nil + begin + u = find_user(user) + unless u + u = self.g.create_user(user.mail, + user.hashed_password, + name: user.show_name, + username: user.login, + confirm: "true") + user.gid = u.id + end + change_password(u.id, user.hashed_password, user.salt) + rescue => e + puts e end + return u + end - def del_user(user) - return unless user.gid - self.g.delete_user(user.gid) - end + def del_user(user) + return unless user.gid + self.g.delete_user(user.gid) + end end end