Clean up Shell.fork_repository

Use project models instead of a list of parameters.
This commit is contained in:
Stan Hu 2019-01-16 22:40:23 -08:00
parent 82b6e5378a
commit 6bac612dc4
4 changed files with 11 additions and 32 deletions

View File

@ -25,9 +25,7 @@ class RepositoryForkWorker
Gitlab::Metrics.add_event(:fork_repository)
result = gitlab_shell.fork_repository(
source_project.repository_storage, source_project.disk_path, source_project.full_path,
target_project.repository_storage, target_project.disk_path, target_project.full_path)
result = gitlab_shell.fork_repository(source_project, target_project)
raise "Unable to fork project #{target_project.id} for repository #{source_project.disk_path} -> #{target_project.disk_path}" unless result

View File

@ -126,20 +126,13 @@ module Gitlab
end
# Fork repository to new path
# forked_from_storage - forked-from project's storage name
# forked_from_disk_path - project disk relative path
# forked_to_storage - forked-to project's storage name
# forked_to_disk_path - forked project disk relative path
#
# Ex.
# fork_repository("nfs-file06", "gitlab/gitlab-ci", "nfs-file07", "new-namespace/gitlab-ci")
def fork_repository(
forked_from_storage, forked_from_disk_path, forked_from_project_name,
forked_to_storage, forked_to_disk_path, forked_to_project_name)
forked_from_relative_path = "#{forked_from_disk_path}.git"
fork_args = [forked_to_storage, "#{forked_to_disk_path}.git", forked_to_project_name]
# source_project - forked-from Project
# target_project - forked-to Project
def fork_repository(source_project, target_project)
forked_from_relative_path = "#{source_project.disk_path}.git"
fork_args = [target_project.repository_storage, "#{target_project.disk_path}.git", target_project.full_path]
GitalyGitlabProjects.new(forked_from_storage, forked_from_relative_path, forked_from_project_name).fork_repository(*fork_args)
GitalyGitlabProjects.new(source_project.repository_storage, forked_from_relative_path, source_project.full_path).fork_repository(*fork_args)
end
# Removes a repository from file system, using rm_diretory which is an alias

View File

@ -474,15 +474,10 @@ describe Gitlab::Shell do
end
describe '#fork_repository' do
let(:target_project) { create(:project) }
subject do
gitlab_shell.fork_repository(
project.repository_storage,
project.disk_path,
project.full_path,
'nfs-file05',
'fork/path',
'fork/path'
)
gitlab_shell.fork_repository(project, target_project)
end
it 'returns true when the command succeeds' do

View File

@ -24,14 +24,7 @@ describe RepositoryForkWorker do
end
def expect_fork_repository
expect(shell).to receive(:fork_repository).with(
'default',
project.disk_path,
project.full_path,
forked_project.repository_storage,
forked_project.disk_path,
forked_project.full_path
)
expect(shell).to receive(:fork_repository).with(project, forked_project)
end
describe 'when a worker was reset without cleanup' do