summaryrefslogtreecommitdiff
path: root/lib/gitlab/workhorse.rb
diff options
context:
space:
mode:
authorAhmad Sherif <me@ahmadsherif.com>2017-03-30 17:24:36 +0200
committerAhmad Sherif <me@ahmadsherif.com>2017-04-03 18:44:57 +0200
commit39753bfb9cdd77ed7fc1458afc202b126ea6984d (patch)
treeab3daae12f978d2dece780fac2eb0305dd035fe4 /lib/gitlab/workhorse.rb
parent2fceb4374141407b2f41ed7b6af5a0b6a2f9f4f1 (diff)
downloadgitlab-ce-39753bfb9cdd77ed7fc1458afc202b126ea6984d.tar.gz
Add feature flags for enabling (Upload|Receive)Pack for Gitalyfeature/add-feature-flags-for-upload-receive-pack
Closes gitaly#168
Diffstat (limited to 'lib/gitlab/workhorse.rb')
-rw-r--r--lib/gitlab/workhorse.rb16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/gitlab/workhorse.rb b/lib/gitlab/workhorse.rb
index d1131ad65e0..d0637f8b394 100644
--- a/lib/gitlab/workhorse.rb
+++ b/lib/gitlab/workhorse.rb
@@ -16,7 +16,7 @@ module Gitlab
SECRET_LENGTH = 32
class << self
- def git_http_ok(repository, user)
+ def git_http_ok(repository, user, action)
repo_path = repository.path_to_repo
params = {
GL_ID: Gitlab::GlId.gl_id(user),
@@ -26,13 +26,25 @@ module Gitlab
if Gitlab.config.gitaly.enabled
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
+
+ feature_enabled = case action.to_s
+ when 'git_receive_pack'
+ Gitlab::GitalyClient.feature_enabled?(:post_receive_pack)
+ when 'git_upload_pack'
+ Gitlab::GitalyClient.feature_enabled?(:post_upload_pack)
+ when 'info_refs'
+ true
+ else
+ raise "Unsupported action: #{action}"
+ end
+
+ params[:GitalySocketPath] = URI(address).path if feature_enabled
end
params