You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
trustieforge/lib/tasks/gitlab_trustie_acts.rake

42 lines
1.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

namespace :gitlab do
desc "sync gitlab's commit acts to trustie"
task :acts_to_trustie => :environment do
begin
projects = Project.where(:status => 1)
projects.each do |project|
c = Commit.find_by_sql("SELECT * FROM `commits` where project_id = #{project.id} order by committed_on limit 1;")
g_project = g.project(project.gpid)
end
rescue Exception => e
puts e
end
g = Gitlab.client
ids = [2,847,931,942]
projects = Project.find(ids)
projects.each do |project|
c = Commit.where(:project_id => project.id)
if c.blank?
begin
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
puts "#{pages}"
puts "project id is #{project.id}"
# api获取每次只能获取20次提交所以需要通过取得page值来获取每页的提交动态
(0..pages).each do |page|
commits = g.commits(project.gpid, :ref_name => g_default_branch, :page => page)
commits.each do |commit|
Commit.create(:project_id => project.id, :repository_id => project.gpid, :version => commit.id, :committer => commit.author_email, :comments => Redmine::CodesetUtil.to_utf8(commit.title, 'UTF-8'), :committed_on => commit.created_at)
end
end
rescue Exception => e
puts e
end
end
end
end
end