0fc9f9d3e7
DB schema generated by a migration may look different in rails 4 and 5 (because rails 5 may use different default values). For this reason it's important to explicitly set for which rails version a migration was written for. See https://stackoverflow.com/questions/35929869/activerecordmigration-deprecation-warning-asks-for-rails-version-but-im-no/35930912#35930912
31 lines
896 B
Ruby
31 lines
896 B
Ruby
# rubocop:disable all
|
|
class MigrateRepoSize < ActiveRecord::Migration[4.2]
|
|
DOWNTIME = false
|
|
|
|
def up
|
|
project_data = execute('SELECT projects.id, namespaces.path AS namespace_path, projects.path AS project_path FROM projects LEFT JOIN namespaces ON projects.namespace_id = namespaces.id')
|
|
|
|
project_data.each do |project|
|
|
id = project['id']
|
|
namespace_path = project['namespace_path'] || ''
|
|
path = File.join(namespace_path, project['project_path'] + '.git')
|
|
|
|
begin
|
|
repo = Gitlab::Git::Repository.new('default', path, '')
|
|
if repo.empty?
|
|
print '-'
|
|
else
|
|
size = repo.size
|
|
print '.'
|
|
execute("UPDATE projects SET repository_size = #{size} WHERE id = #{id}")
|
|
end
|
|
rescue => e
|
|
puts "\nFailed to update project #{id}: #{e}"
|
|
end
|
|
end
|
|
puts "\nDone"
|
|
end
|
|
|
|
def down
|
|
end
|
|
end
|