0b9d56f960
This will be necessary when adding gitaly settings. This version doesn't make any functional changes, but allows us to include this breaking change in 9.0 and add the needed extra settings in the future with backwards compatibility
32 lines
1,003 B
Ruby
32 lines
1,003 B
Ruby
# rubocop:disable all
|
|
class MigrateRepoSize < ActiveRecord::Migration
|
|
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'] || ''
|
|
repos_path = Gitlab.config.gitlab_shell['repos_path'] || Gitlab.config.repositories.storages.default['path']
|
|
path = File.join(repos_path, namespace_path, project['project_path'] + '.git')
|
|
|
|
begin
|
|
repo = Gitlab::Git::Repository.new(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
|