Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
39753bfb
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
39753bfb
编写于
3月 30, 2017
作者:
A
Ahmad Sherif
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add feature flags for enabling (Upload|Receive)Pack for Gitaly
Closes gitaly#168
上级
2fceb437
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
66 addition
and
10 deletion
+66
-10
app/controllers/projects/git_http_controller.rb
app/controllers/projects/git_http_controller.rb
+1
-1
lib/gitlab/workhorse.rb
lib/gitlab/workhorse.rb
+14
-2
spec/lib/gitlab/workhorse_spec.rb
spec/lib/gitlab/workhorse_spec.rb
+51
-7
未找到文件。
app/controllers/projects/git_http_controller.rb
浏览文件 @
39753bfb
...
...
@@ -57,7 +57,7 @@ class Projects::GitHttpController < Projects::GitHttpClientController
def
render_ok
set_workhorse_internal_api_content_type
render
json:
Gitlab
::
Workhorse
.
git_http_ok
(
repository
,
user
)
render
json:
Gitlab
::
Workhorse
.
git_http_ok
(
repository
,
user
,
action_name
)
end
def
render_http_not_allowed
...
...
lib/gitlab/workhorse.rb
浏览文件 @
39753bfb
...
...
@@ -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
...
...
spec/lib/gitlab/workhorse_spec.rb
浏览文件 @
39753bfb
...
...
@@ -180,24 +180,68 @@ describe Gitlab::Workhorse, lib: true do
describe
'.git_http_ok'
do
let
(
:user
)
{
create
(
:user
)
}
let
(
:repo_path
)
{
repository
.
path_to_repo
}
let
(
:action
)
{
'info_refs'
}
subject
{
described_class
.
git_http_ok
(
repository
,
user
)
}
subject
{
described_class
.
git_http_ok
(
repository
,
user
,
action
)
}
it
{
expect
(
subject
).
to
eq
({
GL_ID
:
"user-
#{
user
.
id
}
"
,
RepoPath
:
repo_path
})
}
it
{
expect
(
subject
).
to
include
({
GL_ID
:
"user-
#{
user
.
id
}
"
,
RepoPath
:
repo_path
})
}
context
'when Gitaly is enabled'
do
let
(
:gitaly_params
)
do
{
GitalySocketPath
:
URI
(
Gitlab
::
GitalyClient
.
get_address
(
'default'
)).
path
,
}
end
before
do
allow
(
Gitlab
.
config
.
gitaly
).
to
receive
(
:enabled
).
and_return
(
true
)
end
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
({
it
'includes a Repository param'
do
repo_param
=
{
Repository
:
{
path:
repo_path
,
storage_name:
'default'
,
relative_path:
project
.
full_path
+
'.git'
,
})
}
}
expect
(
subject
).
to
include
(
repo_param
)
end
{
git_receive_pack: :post_receive_pack
,
git_upload_pack: :post_upload_pack
}.
each
do
|
action_name
,
feature_flag
|
context
"when
#{
action_name
}
action is passed"
do
let
(
:action
)
{
action_name
}
context
'when action is enabled by feature flag'
do
it
'includes Gitaly params in the returned value'
do
allow
(
Gitlab
::
GitalyClient
).
to
receive
(
:feature_enabled?
).
with
(
feature_flag
).
and_return
(
true
)
expect
(
subject
).
to
include
(
gitaly_params
)
end
end
context
'when action is not enabled by feature flag'
do
it
'does not include Gitaly params in the returned value'
do
allow
(
Gitlab
::
GitalyClient
).
to
receive
(
:feature_enabled?
).
with
(
feature_flag
).
and_return
(
false
)
expect
(
subject
).
not_to
include
(
gitaly_params
)
end
end
end
end
context
"when info_refs action is passed"
do
let
(
:action
)
{
'info_refs'
}
it
{
expect
(
subject
).
to
include
(
gitaly_params
)
}
end
context
'when action passed is not supported by Gitaly'
do
let
(
:action
)
{
'download'
}
it
{
expect
{
subject
}.
to
raise_exception
(
'Unsupported action: download'
)
}
end
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录