namespace :gitlab do desc "sync gitlab's commit acts to trustie" task :forge_acts => :environment do begin g = Gitlab.client projects = Project.find_by_sql("select * from projects where gpid is not null") projects.each do |project| g_project = g.project(project.gpid) # 获取默认分支 g_default_branch = g_project.default_branch.nil? ? "master" : g_project.default_branch # 总的提交次数 commit_count = g.user_static(project.gpid, :rev => g_default_branch).count pages = commit_count / 20 + 1 pages.each do |page| commits = g.commits(g_project.gpid, :ref_name => g_default_branch, :page => page) commits.each do |commit| Changeset.create(:project_id => project.id, :repository_id => project.gpid, :revision => commit.id, :committer => commit.author_email, :comments => Redmine::CodesetUtil.to_utf8(commit.title, 'UTF-8'), :committed_on => commit.created_at) end end end rescue Exception => e puts e end end end