27 lines
1.1 KiB
Ruby
27 lines
1.1 KiB
Ruby
namespace :project do
|
|
desc 'Fix pull requests where was delete the "from project"'
|
|
task :fix_orphan_pulls => :environment do
|
|
projects = Project.where('ancestry IS NOT NULL')
|
|
say "Pull requests total count is #{PullRequest.count}"
|
|
PullRequest.all.each_with_index do |pull, ind|
|
|
say "Check pull with id:#{pull.id} (#{ind+1}/#{PullRequest.count})"
|
|
if pull.from_project.present?
|
|
print ' updating...'
|
|
pull.from_project_name = pull.from_project.name
|
|
pull.from_project_owner_uname = pull.from_project.owner.uname
|
|
say pull.save(:validate => false) ? 'success' : 'fail!'
|
|
else
|
|
print ' its orphan! updating...'
|
|
parent_path = File.join(APP_CONFIG['git_path'], 'pull_requests', pull.to_project.owner.uname, pull.to_project.name)
|
|
Dir.chdir(parent_path) do
|
|
# Get an owner and project name from the pull dir
|
|
elements = Dir["#{pull.id}-*"].first.split '-' rescue []
|
|
pull.from_project_owner_uname, pull.from_project_name = elements[1], elements[2]
|
|
say pull.save(:validate => false) ? 'success' : 'fail!'
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|