# namespace :gitlab do # desc "make sure trustie'data consistent with gitlab's data" # task :sync_data => :environment do # s = Trustie::Gitlab::Sync.new # g = Gitlab.client # projects = Project.where("gpid is not null and status=?", 1) # projects.each do |project| # # sync members and roles # begin # if project.members.count != g.team_members(project.gpid).count # project.members.each do |m| # begin # gid = m.user.gid # if gid.nil? # gid = s.sync_user(m.user).id # end # access_level = m.roles[0].position == 3 ? 40 : (m.roles[0].position == 4 ? 30 : 20) # # sync project's members # g.add_team_member(project.gpid, gid, access_level) # # sync members' roles # g.edit_team_member(project.gpid, gid, access_level) # rescue Exception => e # DataException.create(:message => e.message, :container_id => project.id, :container_type => "Project") # puts e # end # end # end # rescue Exception => e # puts e # end # end # # users = User.where("gid is not null and status =?", 1) # users.each do |user| # begin # # sync username # g.edit_user(user.gid, :username => user.login) if user.login != g.user(user.gid).try(:username) # # # sync email # g.edit_user(user.gid, :email => user.mail) if user.mail != g.user(user.gid).try(:email) # # # sync password # options = {:encrypted_password=> user.hashed_password, :password_salt=> user.salt} # g.put("/users/ext/#{user.gid}", :body => options) # rescue Exception => e # puts e # end # end # end # end