summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Speicher <robert@gitlab.com>2017-04-03 14:40:17 +0000
committerRobert Speicher <robert@gitlab.com>2017-04-03 14:40:17 +0000
commitb23b76d8eb182ccc57beee37340ff3c5b726dd9b (patch)
tree39da7f8ec83afe9e1f5e7a3ccb89847d19850961
parent41396031162ab62cfac2837acdfcc200e74fda73 (diff)
parent13487809c7fd9994f14babf3e189b434f61692ca (diff)
downloadgitlab-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--Gemfile2
-rw-r--r--Gemfile.lock4
-rw-r--r--lib/gitlab/workhorse.rb12
-rw-r--r--spec/lib/gitlab/workhorse_spec.rb8
4 files changed, 20 insertions, 6 deletions
diff --git a/Gemfile b/Gemfile
index 562ee2d1b9e..0c6bb805b98 100644
--- a/Gemfile
+++ b/Gemfile
@@ -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