Find and mark more Git disk access locations
This commit is contained in:
parent
78d2e91b7c
commit
a0808df0b6
31 changed files with 197 additions and 79 deletions
|
@ -412,7 +412,10 @@ module ProjectsHelper
|
|||
exports_path = File.join(Settings.shared['path'], 'tmp/project_exports')
|
||||
filtered_message = message.strip.gsub(exports_path, "[REPO EXPORT PATH]")
|
||||
|
||||
disk_path = Gitlab.config.repositories.storages[project.repository_storage].legacy_disk_path
|
||||
disk_path = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
Gitlab.config.repositories.storages[project.repository_storage].legacy_disk_path
|
||||
end
|
||||
|
||||
filtered_message.gsub(disk_path.chomp('/'), "[REPOS PATH]")
|
||||
end
|
||||
|
||||
|
|
3
lib/backup.rb
Normal file
3
lib/backup.rb
Normal file
|
@ -0,0 +1,3 @@
|
|||
module Backup
|
||||
Error = Class.new(StandardError)
|
||||
end
|
|
@ -44,7 +44,7 @@ module Backup
|
|||
end
|
||||
|
||||
report_success(success)
|
||||
abort 'Backup failed' unless success
|
||||
raise Backup::Error, 'Backup failed' unless success
|
||||
end
|
||||
|
||||
def restore
|
||||
|
@ -72,7 +72,7 @@ module Backup
|
|||
end
|
||||
|
||||
report_success(success)
|
||||
abort 'Restore failed' unless success
|
||||
abort Backup::Error, 'Restore failed' unless success
|
||||
end
|
||||
|
||||
protected
|
||||
|
|
|
@ -26,7 +26,7 @@ module Backup
|
|||
|
||||
unless status.zero?
|
||||
puts output
|
||||
abort 'Backup failed'
|
||||
raise Backup::Error, 'Backup failed'
|
||||
end
|
||||
|
||||
run_pipeline!([%W(tar --exclude=lost+found -C #{@backup_files_dir} -cf - .), %w(gzip -c -1)], out: [backup_tarball, 'w', 0600])
|
||||
|
@ -39,7 +39,11 @@ module Backup
|
|||
def restore
|
||||
backup_existing_files_dir
|
||||
|
||||
run_pipeline!([%w(gzip -cd), %W(tar --unlink-first --recursive-unlink -C #{app_files_dir} -xf -)], in: backup_tarball)
|
||||
run_pipeline!([%w(gzip -cd), %W(#{tar} --unlink-first --recursive-unlink -C #{app_files_dir} -xf -)], in: backup_tarball)
|
||||
end
|
||||
|
||||
def tar
|
||||
system(*%w[gtar --version], out: '/dev/null') ? 'gtar' : 'tar'
|
||||
end
|
||||
|
||||
def backup_existing_files_dir
|
||||
|
@ -61,7 +65,7 @@ module Backup
|
|||
|
||||
def run_pipeline!(cmd_list, options = {})
|
||||
status_list = Open3.pipeline(*cmd_list, options)
|
||||
abort 'Backup failed' unless status_list.compact.all?(&:success?)
|
||||
raise Backup::Error, 'Backup failed' unless status_list.compact.all?(&:success?)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -27,7 +27,7 @@ module Backup
|
|||
progress.puts "done".color(:green)
|
||||
else
|
||||
puts "creating archive #{tar_file} failed".color(:red)
|
||||
abort 'Backup failed'
|
||||
raise Backup::Error, 'Backup failed'
|
||||
end
|
||||
|
||||
upload
|
||||
|
@ -52,7 +52,7 @@ module Backup
|
|||
progress.puts "done".color(:green)
|
||||
else
|
||||
puts "uploading backup to #{remote_directory} failed".color(:red)
|
||||
abort 'Backup failed'
|
||||
raise Backup::Error, 'Backup failed'
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -66,7 +66,7 @@ module Backup
|
|||
progress.puts "done".color(:green)
|
||||
else
|
||||
puts "deleting tmp directory '#{dir}' failed".color(:red)
|
||||
abort 'Backup failed'
|
||||
raise Backup::Error, 'Backup failed'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -17,7 +17,10 @@ module Backup
|
|||
|
||||
Project.find_each(batch_size: 1000) do |project|
|
||||
progress.print " * #{display_repo_path(project)} ... "
|
||||
path_to_project_repo = path_to_repo(project)
|
||||
|
||||
path_to_project_repo = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
path_to_repo(project)
|
||||
end
|
||||
path_to_project_bundle = path_to_bundle(project)
|
||||
|
||||
# Create namespace dir or hashed path if missing
|
||||
|
@ -51,7 +54,9 @@ module Backup
|
|||
end
|
||||
|
||||
wiki = ProjectWiki.new(project)
|
||||
path_to_wiki_repo = path_to_repo(wiki)
|
||||
path_to_wiki_repo = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
path_to_repo(wiki)
|
||||
end
|
||||
path_to_wiki_bundle = path_to_bundle(wiki)
|
||||
|
||||
if File.exist?(path_to_wiki_repo)
|
||||
|
@ -111,7 +116,9 @@ module Backup
|
|||
# TODO: Need to find a way to do this for gitaly
|
||||
# Gitaly migration issue: https://gitlab.com/gitlab-org/gitaly/issues/1195
|
||||
in_path(path_to_tars(project)) do |dir|
|
||||
path_to_project_repo = path_to_repo(project)
|
||||
path_to_project_repo = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
path_to_repo(project)
|
||||
end
|
||||
cmd = %W(tar -xf #{path_to_tars(project, dir)} -C #{path_to_project_repo} #{dir})
|
||||
|
||||
output, status = Gitlab::Popen.popen(cmd)
|
||||
|
|
|
@ -109,7 +109,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
def ==(other)
|
||||
path == other.path
|
||||
[storage, relative_path] == [other.storage, other.relative_path]
|
||||
end
|
||||
|
||||
def path
|
||||
|
|
|
@ -26,10 +26,6 @@ module Gitlab
|
|||
@shared.error(e)
|
||||
false
|
||||
end
|
||||
|
||||
def path_to_repo
|
||||
@project.repository.path_to_repo
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -22,12 +22,8 @@ module Gitlab
|
|||
"project.wiki.bundle"
|
||||
end
|
||||
|
||||
def path_to_repo
|
||||
@wiki.repository.path_to_repo
|
||||
end
|
||||
|
||||
def wiki_repository_exists?
|
||||
File.exist?(@wiki.repository.path_to_repo) && !@wiki.repository.empty?
|
||||
@wiki.repository.exists? && !@wiki.repository.empty?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -128,10 +128,12 @@ module Gitlab
|
|||
end
|
||||
|
||||
def all_repos
|
||||
Gitlab.config.repositories.storages.each_value do |repository_storage|
|
||||
IO.popen(%W(find #{repository_storage.legacy_disk_path} -mindepth 2 -type d -name *.git)) do |find|
|
||||
find.each_line do |path|
|
||||
yield path.chomp
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
Gitlab.config.repositories.storages.each_value do |repository_storage|
|
||||
IO.popen(%W(find #{repository_storage.legacy_disk_path} -mindepth 2 -type d -name *.git)) do |find|
|
||||
find.each_line do |path|
|
||||
yield path.chomp
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace :gitlab do
|
|||
namespaces = Namespace.pluck(:path)
|
||||
namespaces << HASHED_REPOSITORY_NAME # add so that it will be ignored
|
||||
Gitlab.config.repositories.storages.each do |name, repository_storage|
|
||||
git_base_path = repository_storage.legacy_disk_path
|
||||
git_base_path = Gitlab::GitalyClient::StorageSettings.allow_disk_access { repository_storage.legacy_disk_path }
|
||||
all_dirs = Dir.glob(git_base_path + '/*')
|
||||
|
||||
puts git_base_path.color(:yellow)
|
||||
|
@ -54,7 +54,8 @@ namespace :gitlab do
|
|||
|
||||
move_suffix = "+orphaned+#{Time.now.to_i}"
|
||||
Gitlab.config.repositories.storages.each do |name, repository_storage|
|
||||
repo_root = repository_storage.legacy_disk_path
|
||||
repo_root = Gitlab::GitalyClient::StorageSettings.allow_disk_access { repository_storage.legacy_disk_path }
|
||||
|
||||
# Look for global repos (legacy, depth 1) and normal repos (depth 2)
|
||||
IO.popen(%W(find #{repo_root} -mindepth 1 -maxdepth 2 -name *.git)) do |find|
|
||||
find.each_line do |path|
|
||||
|
|
|
@ -87,11 +87,13 @@ feature 'Import/Export - project import integration test', :js do
|
|||
|
||||
def wiki_exists?(project)
|
||||
wiki = ProjectWiki.new(project)
|
||||
File.exist?(wiki.repository.path_to_repo) && !wiki.repository.empty?
|
||||
wiki.repository.exists? && !wiki.repository.empty?
|
||||
end
|
||||
|
||||
def project_hook_exists?(project)
|
||||
Gitlab::Git::Hook.new('post-receive', project.repository.raw_repository).exists?
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
Gitlab::Git::Hook.new('post-receive', project.repository.raw_repository).exists?
|
||||
end
|
||||
end
|
||||
|
||||
def click_import_project_tab
|
||||
|
|
|
@ -46,7 +46,9 @@ describe Backup::Files do
|
|||
end
|
||||
|
||||
it 'calls tar command with unlink' do
|
||||
expect(subject).to receive(:run_pipeline!).with([%w(gzip -cd), %w(tar --unlink-first --recursive-unlink -C /var/gitlab-registry -xf -)], any_args)
|
||||
expect(subject).to receive(:tar).and_return('blabla-tar')
|
||||
|
||||
expect(subject).to receive(:run_pipeline!).with([%w(gzip -cd), %w(blabla-tar --unlink-first --recursive-unlink -C /var/gitlab-registry -xf -)], any_args)
|
||||
subject.restore
|
||||
end
|
||||
end
|
||||
|
|
|
@ -34,7 +34,9 @@ describe Backup::Repository do
|
|||
let(:timestamp) { Time.utc(2017, 3, 22) }
|
||||
let(:temp_dirs) do
|
||||
Gitlab.config.repositories.storages.map do |name, storage|
|
||||
File.join(storage.legacy_disk_path, '..', 'repositories.old.' + timestamp.to_i.to_s)
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
File.join(storage.legacy_disk_path, '..', 'repositories.old.' + timestamp.to_i.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -20,6 +20,13 @@ describe Gitlab::BareRepositoryImport::Importer, repository: true do
|
|||
Rainbow.enabled = @rainbow
|
||||
end
|
||||
|
||||
around do |example|
|
||||
# TODO migrate BareRepositoryImport https://gitlab.com/gitlab-org/gitaly/issues/953
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'importing a repository' do
|
||||
describe '.execute' do
|
||||
it 'creates a project for a repository in storage' do
|
||||
|
|
|
@ -62,8 +62,10 @@ describe ::Gitlab::BareRepositoryImport::Repository do
|
|||
|
||||
before do
|
||||
gitlab_shell.create_repository(repository_storage, hashed_path)
|
||||
repository = Rugged::Repository.new(repo_path)
|
||||
repository.config['gitlab.fullpath'] = 'to/repo'
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
repository = Rugged::Repository.new(repo_path)
|
||||
repository.config['gitlab.fullpath'] = 'to/repo'
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
|
|
|
@ -159,6 +159,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
|||
let(:feature2) { 'feature2' }
|
||||
|
||||
around do |example|
|
||||
# discover_default_branch will be moved to gitaly-ruby
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
|
@ -373,6 +374,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
|||
|
||||
context '#submodules' do
|
||||
around do |example|
|
||||
# TODO #submodules will be removed, has been migrated to gitaly
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
|
@ -1055,6 +1057,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
|||
|
||||
describe "#rugged_commits_between" do
|
||||
around do |example|
|
||||
# TODO #rugged_commits_between will be removed, has been migrated to gitaly
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
|
@ -1703,6 +1706,7 @@ describe Gitlab::Git::Repository, seed_helper: true do
|
|||
let(:refs) { ['deadbeef', SeedRepo::RubyBlob::ID, '909e6157199'] }
|
||||
|
||||
around do |example|
|
||||
# TODO #batch_existence isn't used anywhere, can we remove it?
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
|
|
|
@ -9,9 +9,11 @@ describe Gitlab::Git::RevList do
|
|||
end
|
||||
|
||||
def stub_popen_rev_list(*additional_args, with_lazy_block: true, output:)
|
||||
repo_path = Gitlab::GitalyClient::StorageSettings.allow_disk_access { repository.path }
|
||||
|
||||
params = [
|
||||
args_for_popen(additional_args),
|
||||
repository.path,
|
||||
repo_path,
|
||||
{},
|
||||
hash_including(lazy_block: with_lazy_block ? anything : nil)
|
||||
]
|
||||
|
|
|
@ -552,7 +552,7 @@ describe Gitlab::GitAccess do
|
|||
it 'returns not found' do
|
||||
project.add_guest(user)
|
||||
repo = project.repository
|
||||
FileUtils.rm_rf(repo.path)
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access { FileUtils.rm_rf(repo.path) }
|
||||
|
||||
# Sanity check for rm_rf
|
||||
expect(repo.exists?).to eq(false)
|
||||
|
@ -750,20 +750,22 @@ describe Gitlab::GitAccess do
|
|||
|
||||
def merge_into_protected_branch
|
||||
@protected_branch_merge_commit ||= begin
|
||||
stub_git_hooks
|
||||
project.repository.add_branch(user, unprotected_branch, 'feature')
|
||||
target_branch = project.repository.lookup('feature')
|
||||
source_branch = project.repository.create_file(
|
||||
user,
|
||||
'filename',
|
||||
'This is the file content',
|
||||
message: 'This is a good commit message',
|
||||
branch_name: unprotected_branch)
|
||||
rugged = project.repository.rugged
|
||||
author = { email: "email@example.com", time: Time.now, name: "Example Git User" }
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
stub_git_hooks
|
||||
project.repository.add_branch(user, unprotected_branch, 'feature')
|
||||
target_branch = project.repository.lookup('feature')
|
||||
source_branch = project.repository.create_file(
|
||||
user,
|
||||
'filename',
|
||||
'This is the file content',
|
||||
message: 'This is a good commit message',
|
||||
branch_name: unprotected_branch)
|
||||
rugged = project.repository.rugged
|
||||
author = { email: "email@example.com", time: Time.now, name: "Example Git User" }
|
||||
|
||||
merge_index = rugged.merge_commits(target_branch, source_branch)
|
||||
Rugged::Commit.create(rugged, author: author, committer: author, message: "commit message", parents: [target_branch, source_branch], tree: merge_index.write_tree(rugged))
|
||||
merge_index = rugged.merge_commits(target_branch, source_branch)
|
||||
Rugged::Commit.create(rugged, author: author, committer: author, message: "commit message", parents: [target_branch, source_branch], tree: merge_index.write_tree(rugged))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -41,8 +41,10 @@ describe 'forked project import' do
|
|||
|
||||
after do
|
||||
FileUtils.rm_rf(export_path)
|
||||
FileUtils.rm_rf(project_with_repo.repository.path_to_repo)
|
||||
FileUtils.rm_rf(project.repository.path_to_repo)
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
FileUtils.rm_rf(project_with_repo.repository.path_to_repo)
|
||||
FileUtils.rm_rf(project.repository.path_to_repo)
|
||||
end
|
||||
end
|
||||
|
||||
it 'can access the MR' do
|
||||
|
|
|
@ -23,8 +23,10 @@ describe Gitlab::ImportExport::RepoRestorer do
|
|||
|
||||
after do
|
||||
FileUtils.rm_rf(export_path)
|
||||
FileUtils.rm_rf(project_with_repo.repository.path_to_repo)
|
||||
FileUtils.rm_rf(project.repository.path_to_repo)
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
FileUtils.rm_rf(project_with_repo.repository.path_to_repo)
|
||||
FileUtils.rm_rf(project.repository.path_to_repo)
|
||||
end
|
||||
end
|
||||
|
||||
it 'restores the repo successfully' do
|
||||
|
@ -34,7 +36,9 @@ describe Gitlab::ImportExport::RepoRestorer do
|
|||
it 'has the webhooks' do
|
||||
restorer.restore
|
||||
|
||||
expect(Gitlab::Git::Hook.new('post-receive', project.repository.raw_repository)).to exist
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
expect(Gitlab::Git::Hook.new('post-receive', project.repository.raw_repository)).to exist
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -405,7 +405,11 @@ describe Gitlab::Shell do
|
|||
describe '#create_repository' do
|
||||
shared_examples '#create_repository' do
|
||||
let(:repository_storage) { 'default' }
|
||||
let(:repository_storage_path) { Gitlab.config.repositories.storages[repository_storage].legacy_disk_path }
|
||||
let(:repository_storage_path) do
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
Gitlab.config.repositories.storages[repository_storage].legacy_disk_path
|
||||
end
|
||||
end
|
||||
let(:repo_name) { 'project/path' }
|
||||
let(:created_path) { File.join(repository_storage_path, repo_name + '.git') }
|
||||
|
||||
|
|
|
@ -16,7 +16,11 @@ describe MergeRequest do
|
|||
|
||||
describe '#squash_in_progress?' do
|
||||
shared_examples 'checking whether a squash is in progress' do
|
||||
let(:repo_path) { subject.source_project.repository.path }
|
||||
let(:repo_path) do
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
subject.source_project.repository.path
|
||||
end
|
||||
end
|
||||
let(:squash_path) { File.join(repo_path, "gitlab-worktree", "squash-#{subject.id}") }
|
||||
|
||||
before do
|
||||
|
@ -2197,7 +2201,11 @@ describe MergeRequest do
|
|||
|
||||
describe '#rebase_in_progress?' do
|
||||
shared_examples 'checking whether a rebase is in progress' do
|
||||
let(:repo_path) { subject.source_project.repository.path }
|
||||
let(:repo_path) do
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
subject.source_project.repository.path
|
||||
end
|
||||
end
|
||||
let(:rebase_path) { File.join(repo_path, "gitlab-worktree", "rebase-#{subject.id}") }
|
||||
|
||||
before do
|
||||
|
|
|
@ -301,12 +301,18 @@ describe Namespace do
|
|||
end
|
||||
|
||||
def project_rugged(project)
|
||||
project.repository.rugged
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
project.repository.rugged
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#rm_dir', 'callback' do
|
||||
let(:repository_storage_path) { Gitlab.config.repositories.storages.default.legacy_disk_path }
|
||||
let(:repository_storage_path) do
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
Gitlab.config.repositories.storages.default.legacy_disk_path
|
||||
end
|
||||
end
|
||||
let(:path_in_dir) { File.join(repository_storage_path, namespace.full_path) }
|
||||
let(:deleted_path) { namespace.full_path.gsub(namespace.path, "#{namespace.full_path}+#{namespace.id}+deleted") }
|
||||
let(:deleted_path_in_dir) { File.join(repository_storage_path, deleted_path) }
|
||||
|
|
|
@ -136,7 +136,10 @@ describe Repository do
|
|||
before do
|
||||
options = { message: 'test tag message\n',
|
||||
tagger: { name: 'John Smith', email: 'john@gmail.com' } }
|
||||
repository.rugged.tags.create(annotated_tag_name, 'a48e4fc218069f68ef2e769dd8dfea3991362175', options)
|
||||
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
repository.rugged.tags.create(annotated_tag_name, 'a48e4fc218069f68ef2e769dd8dfea3991362175', options)
|
||||
end
|
||||
|
||||
double_first = double(committed_date: Time.now - 1.second)
|
||||
double_last = double(committed_date: Time.now)
|
||||
|
@ -1048,6 +1051,13 @@ describe Repository do
|
|||
let(:target_project) { project }
|
||||
let(:target_repository) { target_project.repository }
|
||||
|
||||
around do |example|
|
||||
# TODO Gitlab::Git::OperationService will be moved to gitaly-ruby and disappear from this repo
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
context 'when pre hooks were successful' do
|
||||
before do
|
||||
service = Gitlab::Git::HooksService.new
|
||||
|
@ -1309,6 +1319,13 @@ describe Repository do
|
|||
end
|
||||
|
||||
describe '#update_autocrlf_option' do
|
||||
around do |example|
|
||||
# TODO Gitlab::Git::OperationService will be moved to gitaly-ruby and disappear from this repo
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when autocrlf is not already set to :input' do
|
||||
before do
|
||||
repository.raw_repository.autocrlf = true
|
||||
|
@ -1802,7 +1819,9 @@ describe Repository do
|
|||
expect(repository.branch_count).to be_an(Integer)
|
||||
|
||||
# NOTE: Until rugged goes away, make sure rugged and gitaly are in sync
|
||||
rugged_count = repository.raw_repository.rugged.branches.count
|
||||
rugged_count = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
repository.raw_repository.rugged.branches.count
|
||||
end
|
||||
|
||||
expect(repository.branch_count).to eq(rugged_count)
|
||||
end
|
||||
|
@ -1813,7 +1832,9 @@ describe Repository do
|
|||
expect(repository.tag_count).to be_an(Integer)
|
||||
|
||||
# NOTE: Until rugged goes away, make sure rugged and gitaly are in sync
|
||||
rugged_count = repository.raw_repository.rugged.tags.count
|
||||
rugged_count = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
repository.raw_repository.rugged.tags.count
|
||||
end
|
||||
|
||||
expect(repository.tag_count).to eq(rugged_count)
|
||||
end
|
||||
|
@ -2073,7 +2094,10 @@ describe Repository do
|
|||
it "attempting to call keep_around on truncated ref does not fail" do
|
||||
repository.keep_around(sample_commit.id)
|
||||
ref = repository.send(:keep_around_ref_name, sample_commit.id)
|
||||
path = File.join(repository.path, ref)
|
||||
|
||||
path = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
File.join(repository.path, ref)
|
||||
end
|
||||
# Corrupt the reference
|
||||
File.truncate(path, 0)
|
||||
|
||||
|
@ -2088,6 +2112,13 @@ describe Repository do
|
|||
end
|
||||
|
||||
describe '#update_ref' do
|
||||
around do |example|
|
||||
# TODO Gitlab::Git::OperationService will be moved to gitaly-ruby and disappear from this repo
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'can create a ref' do
|
||||
Gitlab::Git::OperationService.new(nil, repository.raw_repository).send(:update_ref, 'refs/heads/foobar', 'refs/heads/master', Gitlab::Git::BLANK_SHA)
|
||||
|
||||
|
@ -2372,7 +2403,9 @@ describe Repository do
|
|||
end
|
||||
|
||||
def create_remote_branch(remote_name, branch_name, target)
|
||||
rugged = repository.rugged
|
||||
rugged = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
repository.rugged
|
||||
end
|
||||
rugged.references.create("refs/remotes/#{remote_name}/#{branch_name}", target.id)
|
||||
end
|
||||
|
||||
|
|
|
@ -287,7 +287,10 @@ describe API::Tags do
|
|||
context 'annotated tag' do
|
||||
it 'creates a new annotated tag' do
|
||||
# Identity must be set in .gitconfig to create annotated tag.
|
||||
repo_path = project.repository.path_to_repo
|
||||
repo_path = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
project.repository.path_to_repo
|
||||
end
|
||||
|
||||
system(*%W(#{Gitlab.config.git.bin_path} --git-dir=#{repo_path} config user.name #{user.name}))
|
||||
system(*%W(#{Gitlab.config.git.bin_path} --git-dir=#{repo_path} config user.email #{user.email}))
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ describe Projects::TransferService do
|
|||
it 'updates project full path in .git/config' do
|
||||
transfer_project(project, user, group)
|
||||
|
||||
expect(project.repository.rugged.config['gitlab.fullpath']).to eq "#{group.full_path}/#{project.path}"
|
||||
expect(rugged_config['gitlab.fullpath']).to eq "#{group.full_path}/#{project.path}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -84,7 +84,9 @@ describe Projects::TransferService do
|
|||
end
|
||||
|
||||
def project_path(project)
|
||||
project.repository.path_to_repo
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
project.repository.path_to_repo
|
||||
end
|
||||
end
|
||||
|
||||
def current_path
|
||||
|
@ -101,7 +103,7 @@ describe Projects::TransferService do
|
|||
it 'rolls back project full path in .git/config' do
|
||||
attempt_project_transfer
|
||||
|
||||
expect(project.repository.rugged.config['gitlab.fullpath']).to eq project.full_path
|
||||
expect(rugged_config['gitlab.fullpath']).to eq project.full_path
|
||||
end
|
||||
|
||||
it "doesn't send move notifications" do
|
||||
|
@ -264,4 +266,10 @@ describe Projects::TransferService do
|
|||
transfer_project(project, owner, group)
|
||||
end
|
||||
end
|
||||
|
||||
def rugged_config
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
project.repository.rugged.config
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -125,7 +125,7 @@ describe Projects::UpdateService do
|
|||
|
||||
context 'when we update project but not enabling a wiki' do
|
||||
it 'does not try to create an empty wiki' do
|
||||
FileUtils.rm_rf(project.wiki.repository.path)
|
||||
Gitlab::Shell.new.rm_directory(project.repository_storage, project.wiki.path)
|
||||
|
||||
result = update_project(project, user, { name: 'test1' })
|
||||
|
||||
|
@ -146,7 +146,7 @@ describe Projects::UpdateService do
|
|||
context 'when enabling a wiki' do
|
||||
it 'creates a wiki' do
|
||||
project.project_feature.update(wiki_access_level: ProjectFeature::DISABLED)
|
||||
FileUtils.rm_rf(project.wiki.repository.path)
|
||||
Gitlab::Shell.new.rm_directory(project.repository_storage, project.wiki.path)
|
||||
|
||||
result = update_project(project, user, project_feature_attributes: { wiki_access_level: ProjectFeature::ENABLED })
|
||||
|
||||
|
|
|
@ -123,7 +123,11 @@ module CycleAnalyticsHelpers
|
|||
|
||||
if branch_update.newrev
|
||||
_, opts = args
|
||||
commit = raw_repository.commit(branch_update.newrev).rugged_commit
|
||||
|
||||
commit = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
raw_repository.commit(branch_update.newrev).rugged_commit
|
||||
end
|
||||
|
||||
branch_update.newrev = commit.amend(
|
||||
update_ref: "#{Gitlab::Git::BRANCH_REF_PREFIX}#{opts[:branch_name]}",
|
||||
author: commit.author.merge(time: new_date),
|
||||
|
|
|
@ -101,7 +101,9 @@ describe 'gitlab:app namespace rake task' do
|
|||
|
||||
before do
|
||||
stub_env('SKIP', 'db')
|
||||
path = File.join(project.repository.path_to_repo, 'custom_hooks')
|
||||
path = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
File.join(project.repository.path_to_repo, 'custom_hooks')
|
||||
end
|
||||
FileUtils.mkdir_p(path)
|
||||
FileUtils.touch(File.join(path, "dummy.txt"))
|
||||
end
|
||||
|
@ -122,7 +124,10 @@ describe 'gitlab:app namespace rake task' do
|
|||
expect { run_rake_task('gitlab:backup:create') }.to output.to_stdout
|
||||
expect { run_rake_task('gitlab:backup:restore') }.to output.to_stdout
|
||||
|
||||
expect(Dir.entries(File.join(project.repository.path, 'custom_hooks'))).to include("dummy.txt")
|
||||
repo_path = Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
project.repository.path
|
||||
end
|
||||
expect(Dir.entries(File.join(repo_path, 'custom_hooks'))).to include("dummy.txt")
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -243,10 +248,12 @@ describe 'gitlab:app namespace rake task' do
|
|||
FileUtils.mkdir_p(b_storage_dir)
|
||||
|
||||
# Even when overriding the storage, we have to move it there, so it exists
|
||||
FileUtils.mv(
|
||||
File.join(Settings.absolute(storages['default'].legacy_disk_path), project_b.repository.disk_path + '.git'),
|
||||
Rails.root.join(storages['test_second_storage'].legacy_disk_path, project_b.repository.disk_path + '.git')
|
||||
)
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
FileUtils.mv(
|
||||
File.join(Settings.absolute(storages['default'].legacy_disk_path), project_b.repository.disk_path + '.git'),
|
||||
Rails.root.join(storages['test_second_storage'].legacy_disk_path, project_b.repository.disk_path + '.git')
|
||||
)
|
||||
end
|
||||
|
||||
expect { run_rake_task('gitlab:backup:create') }.to output.to_stdout
|
||||
|
||||
|
|
|
@ -88,7 +88,9 @@ describe RepositoryCheck::SingleRepositoryWorker do
|
|||
end
|
||||
|
||||
def break_wiki(project)
|
||||
break_repo(wiki_path(project))
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
break_repo(wiki_path(project))
|
||||
end
|
||||
end
|
||||
|
||||
def wiki_path(project)
|
||||
|
@ -96,7 +98,9 @@ describe RepositoryCheck::SingleRepositoryWorker do
|
|||
end
|
||||
|
||||
def break_project(project)
|
||||
break_repo(project.repository.path_to_repo)
|
||||
Gitlab::GitalyClient::StorageSettings.allow_disk_access do
|
||||
break_repo(project.repository.path_to_repo)
|
||||
end
|
||||
end
|
||||
|
||||
def break_repo(repo)
|
||||
|
|
Loading…
Reference in a new issue