Merge branch 'develop' into dev_hjq

gitlab_guange
ouyangxuhua 10 years ago
commit 1e652faec7

@ -346,27 +346,13 @@ update
# end
#add by hx
if g.commits(@project.gpid , :page=>25).count==0
count = count_commits(@project.gpid , 0 , 25)
elsif g.commits(@project.gpid , :page=>50).count ==0
count = count_commits(@project.gpid , 25 , 50)+ 25 * 20
elsif g.commits(@project.gpid , :page=>75).count ==0
count = count_commits(@project.gpid , 50 , 75)+ 50 * 20
elsif g.commits(@project.gpid , :page=>100).count== 0
count = count_commits(@project.gpid , 75 , 100) + 75 * 20
elsif g.commits(@project.gpid , :page=>125).count==0
count = count_commits(@project.gpid , 100 , 125) + 100 * 20
elsif g.commits(@project.gpid , :page=>150).count==0
count = count_commits(@project.gpid , 125 , 150) + 125 * 20
else
count = count_commits(@project.gpid , 150 ,200) + 150 * 20
end
@changesets = g.commits(@project.gpid)
@changesets = g.commits(@project.gpid, :ref_name => @rev)
# @changesets = @repository.latest_changesets(@path, @rev)
# @changesets_count = @repository.latest_changesets(@path, @rev).count
@changesets_all_count = count
@changesets_all_count = 0
@changesets_latest_coimmit = @changesets[0]
@properties = @repository.properties(@path, @rev)
@repositories = @project.repositories
@ -409,8 +395,28 @@ update
limit = 20
#每次页面的换回值从1开始,但是gitlab的页面查询是从0开始,所以先改变page的类型减一在改回来
@commits = g.commits(@project.gpid, page:(params[:page].to_i - 1).to_s)
#add by hx
if g.commits(@project.gpid , :page=>200).count > 0
count = 4020
elsif g.commits(@project.gpid , :page=>25).count==0
count = count_commits(@project.gpid , 0 , 25)
elsif g.commits(@project.gpid , :page=>50).count ==0
count = count_commits(@project.gpid , 25 , 50)+ 25 * 20
elsif g.commits(@project.gpid , :page=>75).count ==0
count = count_commits(@project.gpid , 50 , 75)+ 50 * 20
elsif g.commits(@project.gpid , :page=>100).count== 0
count = count_commits(@project.gpid , 75 , 100) + 75 * 20
elsif g.commits(@project.gpid , :page=>125).count==0
count = count_commits(@project.gpid , 100 , 125) + 100 * 20
elsif g.commits(@project.gpid , :page=>150).count==0
count = count_commits(@project.gpid , 125 , 150) + 125 * 20
else
count = count_commits(@project.gpid , 150 ,200) + 150 * 20
end
#页面传递必须要str类型,但是Paginator的初始化必须要num类型,需要类型转化
@commits_count = params[:commit_count].to_i
@commits_count = count
@commits_pages = Redmine::Pagination::Paginator.new @commits_count,limit,params[:page]
@commit = g.commit(@project.gpid,@rev)

@ -226,7 +226,7 @@ class User < Principal
validates_uniqueness_of :login, :if => Proc.new { |user| user.login_changed? && user.login.present? }, :case_sensitive => false
validates_uniqueness_of :mail, :if => Proc.new { |user| user.mail_changed? && user.mail.present? }, :case_sensitive => false
# Login must contain letters, numbers, underscores only
validates_format_of :login, :with => /\A[a-z0-9_\-@\.]*\z/i
validates_format_of :login, :with => /\A[a-z0-9_\-\.]*\z/i
validates_length_of :login, :maximum => LOGIN_LENGTH_LIMIT
validates_length_of :firstname, :maximum => 30
validates_length_of :lastname, :maximum => 30

@ -52,10 +52,9 @@
</span>
<span class="fr mr5"><font class="fb ml2 mr2 vl_commit">
<%=link_to @changesets_all_count, {:action => 'changes', :path => to_path_param(@path), :id => @project,
:repository_id => @repository.identifier_param,
:rev => @rev,:page=>1 ,
:commit_count =>"#{@changesets_all_count}"} %></font> 提交
<%=link_to"全部提交次数", {:action => 'changes', :path => to_path_param(@path), :id => @project, :repository_id => @repository.identifier_param, :rev => @rev,:page=>1 ,:commit_count =>"#{@changesets_all_count}"} %></font>
</span>
</div>
<% end %>

@ -25,8 +25,8 @@
<li >
<span class="tit_fb ">编程代码:</span>
<div class="showHworkP break_word">
<%= text_format(work.description) if work.description%>
<div class="showHworkP break_word"><pre class="fontGrey2 font_cus"><%= text_format(work.description) if work.description%>
</pre>
</div>
<div class="cl"></div>
</li>

@ -969,7 +969,6 @@ ActiveRecord::Schema.define(:version => 20151204062220) do
t.integer "course_group_id", :default => 0
end
add_index "members", ["course_id"], :name => "index_members_on_course_id"
add_index "members", ["project_id"], :name => "index_members_on_project_id"
add_index "members", ["user_id", "project_id", "course_id"], :name => "index_members_on_user_id_and_project_id", :unique => true
add_index "members", ["user_id"], :name => "index_members_on_user_id"
@ -1526,6 +1525,7 @@ ActiveRecord::Schema.define(:version => 20151204062220) do
end
add_index "student_works", ["homework_common_id", "user_id"], :name => "index_student_works_on_homework_common_id_and_user_id"
add_index "student_works", ["homework_common_id"], :name => "index"
create_table "student_works_evaluation_distributions", :force => true do |t|
t.integer "student_work_id"

@ -0,0 +1,25 @@
require 'trustie/gitlab/sync'
namespace :gitlab do
namespace :check_members do
desc "check up projects' members "
task :projects => :environment do
s = Trustie::Gitlab::Sync.new
g = Gitlab.client
Project.all.each do |project|
unless project.gpid.nil?
begin
gmembers = g.team_members(project.gpid)
if gmembers.count != project.members.count
puts "gitlab' projects count #{gmembers.count}"
puts "project ID is #{project.id}"
s.only_members(project)
end
rescue
p "This project is wrong #{project.id}"
end
end
end
end
end
end

@ -6,32 +6,55 @@ namespace :gitlab do
users = User.find_by_sql("select * from users where gid is null")
s = Trustie::Gitlab::Sync.new
g = Gitlab.client
logger = Logger.new('./log/add_gid.log', 'daily') #按天生成
logger_i = Logger.new('./log/task_add_gid.log', 'daily')
logger_e = Logger.new('./log/task_add_gid_error.log', 'daily')
NAMESPACE_REGEX_STR = '(?:[a-zA-Z0-9_\.][a-zA-Z0-9_\-\.]*[a-zA-Z0-9_\-]|[a-zA-Z0-9_])'.freeze
MAIL_REGEX_STR ='^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$'.freeze
error_cnt=0
success_cnt=0
p "同步Gitlab用户开始..."
users.each do |user|
info="userid=#{user.id},mail=#{user.mail},login(username)=#{user.login},name=#{user.show_name}"
# username不能有特殊字符,不能有保留字符,邮箱特殊字符(比如‘>)导致search失败的name不能为空串
if !(user.login =~ /\A#{NAMESPACE_REGEX_STR}\Z/.freeze)
logger_e.error("#{info}error=校验失败username特殊字符")
error_cnt+=1
next
elsif !(user.mail.downcase =~ /#{MAIL_REGEX_STR}/)
logger_e.error("#{info}error=校验失败:邮箱特殊字符")
error_cnt+=1
next
elsif user.show_name.lstrip.rstrip.blank?
logger_e.error("#{info}error=校验失败name不正常")
error_cnt+=1
next
end
begin
us = g.get("/users?search=#{user.mail}")
puts user.mail
if us.blank?
puts "55555555555555555"
s.sync_user(user)
logger_i.info("sync_remote_user:id=#{user.id},mail=#{user.mail}")
success_cnt+=1
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
# !爆炸方法抛出异常
user.save!
logger_i.info("sync_local_user:#{info}")
success_cnt+=1
end
end
end
end
rescue => e
logger.error("userid=#{user.id},mail=#{user.mail},login=#{user.login},error=#{e}")
logger_e.error("#{info},error=#{e}")
puts e
end
end
p "同步Gitlab用户结束..."
p "同步成功#{success_cnt},未完成#{error_cnt}"
end
task :sync_members => :environment do

@ -0,0 +1 @@
just test
Loading…
Cancel
Save