diff options
author | Robert Speicher <robert@gitlab.com> | 2017-04-03 14:40:17 +0000 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2017-04-03 14:40:17 +0000 |
commit | b23b76d8eb182ccc57beee37340ff3c5b726dd9b (patch) | |
tree | 39da7f8ec83afe9e1f5e7a3ccb89847d19850961 | |
parent | 41396031162ab62cfac2837acdfcc200e74fda73 (diff) | |
parent | 13487809c7fd9994f14babf3e189b434f61692ca (diff) | |
download | gitlab-ce-b23b76d8eb182ccc57beee37340ff3c5b726dd9b.tar.gz |
Merge branch 'workhorse-gitaly-repository' into 'master'
Pass Gitaly 'Repository' messages to workhorse for Git HTTP
Closes gitaly#148
See merge request !10343
-rw-r--r-- | Gemfile | 2 | ||||
-rw-r--r-- | Gemfile.lock | 4 | ||||
-rw-r--r-- | lib/gitlab/workhorse.rb | 12 | ||||
-rw-r--r-- | spec/lib/gitlab/workhorse_spec.rb | 8 |
4 files changed, 20 insertions, 6 deletions
@@ -352,4 +352,4 @@ gem 'vmstat', '~> 2.3.0' gem 'sys-filesystem', '~> 1.1.6' # Gitaly GRPC client -gem 'gitaly', '~> 0.3.0' +gem 'gitaly', '~> 0.5.0' diff --git a/Gemfile.lock b/Gemfile.lock index 8382de2b7a0..304fc9f2bb3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -253,7 +253,7 @@ GEM json get_process_mem (0.2.0) gherkin-ruby (0.3.2) - gitaly (0.3.0) + gitaly (0.5.0) google-protobuf (~> 3.1) grpc (~> 1.0) github-linguist (4.7.6) @@ -899,7 +899,7 @@ DEPENDENCIES fuubar (~> 2.0.0) gemnasium-gitlab-service (~> 0.2) gemojione (~> 3.0) - gitaly (~> 0.3.0) + gitaly (~> 0.5.0) github-linguist (~> 4.7.0) gitlab-flowdock-git-hook (~> 1.0.1) gitlab-markup (~> 1.5.1) diff --git a/lib/gitlab/workhorse.rb b/lib/gitlab/workhorse.rb index 6fe85af3c30..d1131ad65e0 100644 --- a/lib/gitlab/workhorse.rb +++ b/lib/gitlab/workhorse.rb @@ -17,14 +17,22 @@ module Gitlab class << self def git_http_ok(repository, user) + repo_path = repository.path_to_repo params = { GL_ID: Gitlab::GlId.gl_id(user), - RepoPath: repository.path_to_repo, + RepoPath: repo_path, } if Gitlab.config.gitaly.enabled - address = Gitlab::GitalyClient.get_address(repository.project.repository_storage) + storage = repository.project.repository_storage + address = Gitlab::GitalyClient.get_address(storage) params[:GitalySocketPath] = URI(address).path + # TODO: use GitalyClient code to assemble the Repository message + params[:Repository] = Gitaly::Repository.new( + path: repo_path, + storage_name: storage, + relative_path: Gitlab::RepoPath.strip_storage_path(repo_path), + ).to_h end params diff --git a/spec/lib/gitlab/workhorse_spec.rb b/spec/lib/gitlab/workhorse_spec.rb index 535c96eeee9..cb7c810124e 100644 --- a/spec/lib/gitlab/workhorse_spec.rb +++ b/spec/lib/gitlab/workhorse_spec.rb @@ -179,10 +179,11 @@ describe Gitlab::Workhorse, lib: true do describe '.git_http_ok' do let(:user) { create(:user) } + let(:repo_path) { repository.path_to_repo } subject { described_class.git_http_ok(repository, user) } - it { expect(subject).to eq({ GL_ID: "user-#{user.id}", RepoPath: repository.path_to_repo }) } + it { expect(subject).to eq({ GL_ID: "user-#{user.id}", RepoPath: repo_path }) } context 'when Gitaly is enabled' do before do @@ -192,6 +193,11 @@ describe Gitlab::Workhorse, lib: true do it 'includes Gitaly params in the returned value' do gitaly_socket_path = URI(Gitlab::GitalyClient.get_address('default')).path expect(subject).to include({ GitalySocketPath: gitaly_socket_path }) + expect(subject[:Repository]).to include({ + path: repo_path, + storage_name: 'default', + relative_path: project.full_path + '.git', + }) end end end |