diff options
author | Stan Hu <stanhu@gmail.com> | 2018-12-22 23:34:35 -0800 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2019-02-05 21:33:09 -0800 |
commit | 82b6e5378ab7c63b166229388f0a9b1bd79319c7 (patch) | |
tree | fb16d3520109ddf6135ede97dff5232857b3c515 /lib/gitlab/shell.rb | |
parent | d8e24e9d3896443e4b46c99a9b61a59d2a1acb2e (diff) | |
download | gitlab-ce-82b6e5378ab7c63b166229388f0a9b1bd79319c7.tar.gz |
Send project name with Gitaly repository requests
When hashed storage is in use, it's helpful to have the project
name associated with the request.
Closes https://gitlab.com/gitlab-org/gitaly/issues/1394
Diffstat (limited to 'lib/gitlab/shell.rb')
-rw-r--r-- | lib/gitlab/shell.rb | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/lib/gitlab/shell.rb b/lib/gitlab/shell.rb index bdf21cf3134..a3e0451a8fd 100644 --- a/lib/gitlab/shell.rb +++ b/lib/gitlab/shell.rb @@ -68,15 +68,16 @@ module Gitlab # # storage - the shard key # name - project disk path + # gl_project_name - project name # # Ex. - # create_repository("default", "gitlab/gitlab-ci") + # create_repository("default", "path/to/gitlab-ci", "gitlab/gitlab-ci") # - def create_repository(storage, name) + def create_repository(storage, name, gl_project_name) relative_path = name.dup relative_path << '.git' unless relative_path.end_with?('.git') - repository = Gitlab::Git::Repository.new(storage, relative_path, '') + repository = Gitlab::Git::Repository.new(storage, relative_path, '', gl_project_name) wrapped_gitaly_errors { repository.gitaly_repository_client.create_repository } true @@ -94,13 +95,13 @@ module Gitlab # Ex. # import_repository("nfs-file06", "gitlab/gitlab-ci", "https://gitlab.com/gitlab-org/gitlab-test.git") # - def import_repository(storage, name, url) + def import_repository(storage, name, url, gl_project_name) if url.start_with?('.', '/') raise Error.new("don't use disk paths with import_repository: #{url.inspect}") end relative_path = "#{name}.git" - cmd = GitalyGitlabProjects.new(storage, relative_path) + cmd = GitalyGitlabProjects.new(storage, relative_path, gl_project_name) success = cmd.import_project(url, git_timeout) raise Error, cmd.output unless success @@ -132,11 +133,13 @@ module Gitlab # # 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_to_storage, forked_to_disk_path) + 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"] + fork_args = [forked_to_storage, "#{forked_to_disk_path}.git", forked_to_project_name] - GitalyGitlabProjects.new(forked_from_storage, forked_from_relative_path).fork_repository(*fork_args) + GitalyGitlabProjects.new(forked_from_storage, forked_from_relative_path, forked_from_project_name).fork_repository(*fork_args) end # Removes a repository from file system, using rm_diretory which is an alias @@ -397,16 +400,17 @@ module Gitlab end class GitalyGitlabProjects - attr_reader :shard_name, :repository_relative_path, :output + attr_reader :shard_name, :repository_relative_path, :output, :gl_project_name - def initialize(shard_name, repository_relative_path) + def initialize(shard_name, repository_relative_path, gl_project_name) @shard_name = shard_name @repository_relative_path = repository_relative_path @output = '' + @gl_project_name = gl_project_name end def import_project(source, _timeout) - raw_repository = Gitlab::Git::Repository.new(shard_name, repository_relative_path, nil) + raw_repository = Gitlab::Git::Repository.new(shard_name, repository_relative_path, nil, gl_project_name) Gitlab::GitalyClient::RepositoryService.new(raw_repository).import_repository(source) true @@ -415,9 +419,9 @@ module Gitlab false end - def fork_repository(new_shard_name, new_repository_relative_path) - target_repository = Gitlab::Git::Repository.new(new_shard_name, new_repository_relative_path, nil) - raw_repository = Gitlab::Git::Repository.new(shard_name, repository_relative_path, nil) + def fork_repository(new_shard_name, new_repository_relative_path, new_project_name) + target_repository = Gitlab::Git::Repository.new(new_shard_name, new_repository_relative_path, nil, new_project_name) + raw_repository = Gitlab::Git::Repository.new(shard_name, repository_relative_path, nil, gl_project_name) Gitlab::GitalyClient::RepositoryService.new(target_repository).fork_repository(raw_repository) rescue GRPC::BadStatus => e |