Remove direct disk access in RemoveDotGitFromUsernames

Prior to this change, the migration touched the disk path. This has been
removed.

Further, I believe it also fixes a bug. It seems that GitLab Shell
checks if the root path exists, when the path is duplicated. For
example, if the shard is located at /home/git, it did check if
`/home/git/home/git` existed.
This commit is contained in:
Zeger-Jan van de Weg 2018-07-19 10:55:55 +02:00
parent cfbb256b8b
commit a53a4a4309
No known key found for this signature in database
GPG Key ID: 65F6A8D64A88ABAC
2 changed files with 5 additions and 15 deletions

View File

@ -1,11 +1,7 @@
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class RemoveDotGitFromUsernames < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
include Gitlab::ShellAdapter
# Set this constant to true if this migration requires downtime.
DOWNTIME = false
def up
@ -64,16 +60,14 @@ class RemoveDotGitFromUsernames < ActiveRecord::Migration
# we rename suffix instead of removing it
path = path.sub(/\.git\z/, '_git')
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
check_routes(path.dup, 0, path)
end
check_routes(path.dup, 0, path)
end
def check_routes(base, counter, path)
route_exists = route_exists?(path)
Gitlab.config.repositories.storages.each do |shard, storage|
if route_exists || path_exists?(shard, storage.legacy_disk_path)
Gitlab.config.repositories.storages.each do |shard, _storage|
if route_exists || path_exists?(shard, path)
counter += 1
path = "#{base}#{counter}"

View File

@ -27,7 +27,7 @@ describe MigrateProcessCommitWorkerJobs do
end
describe '#repository' do
it 'returns a Rugged::Repository' do
it 'returns a mock implemention of ::Repository' do
migration_project = described_class::Project
.find_including_path(project.id)
@ -83,11 +83,7 @@ describe MigrateProcessCommitWorkerJobs do
end
it 'encodes data to UTF-8' do
allow_any_instance_of(Rugged::Repository).to receive(:lookup)
.with(commit.id)
.and_return(commit)
allow(commit).to receive(:message)
allow(commit).to receive(:body)
.and_return('김치'.force_encoding('BINARY'))
migration.up