Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
a83d4d01
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,体验更适合开发者的 AI 搜索 >>
提交
a83d4d01
编写于
9月 13, 2016
作者:
Z
Z.J. van de Weg
提交者:
Z.J. van de Weg
10月 31, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
GrapeDSL for branches endpoints
上级
b216d9bf
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
57 addition
and
78 deletion
+57
-78
lib/api/branches.rb
lib/api/branches.rb
+57
-66
spec/requests/api/branches_spec.rb
spec/requests/api/branches_spec.rb
+0
-12
未找到文件。
lib/api/branches.rb
浏览文件 @
a83d4d01
...
@@ -6,58 +6,55 @@ module API
...
@@ -6,58 +6,55 @@ module API
before
{
authenticate!
}
before
{
authenticate!
}
before
{
authorize!
:download_code
,
user_project
}
before
{
authorize!
:download_code
,
user_project
}
params
do
requires
:id
,
type:
String
,
desc:
'The ID of a project'
end
resource
:projects
do
resource
:projects
do
# Get a project repository branches
desc
'Get a project repository branches'
do
#
success
Entities
::
RepoBranch
# Parameters:
end
# id (required) - The ID of a project
# Example Request:
# GET /projects/:id/repository/branches
get
":id/repository/branches"
do
get
":id/repository/branches"
do
branches
=
user_project
.
repository
.
branches
.
sort_by
(
&
:name
)
branches
=
user_project
.
repository
.
branches
.
sort_by
(
&
:name
)
present
branches
,
with:
Entities
::
RepoBranch
,
project:
user_project
present
branches
,
with:
Entities
::
RepoBranch
,
project:
user_project
end
end
# Get a single branch
desc
'Get a single branch'
do
#
success
Entities
::
RepoBranch
# Parameters:
end
# id (required) - The ID of a project
params
do
# branch (required) - The name of the branch
requires
:branch
,
type:
String
,
regexp:
/.+/
,
desc:
'The name of the branch'
# Example Request:
end
# GET /projects/:id/repository/branches/:branch
get
':id/repository/branches/:branch'
do
get
':id/repository/branches/:branch'
,
requirements:
{
branch:
/.+/
}
do
branch
=
user_project
.
repository
.
find_branch
(
params
[
:branch
])
@branch
=
user_project
.
repository
.
branches
.
find
{
|
item
|
item
.
name
==
params
[
:branch
]
}
not_found!
(
"Branch"
)
unless
branch
not_found!
(
"Branch"
)
unless
@branch
present
@
branch
,
with:
Entities
::
RepoBranch
,
project:
user_project
present
branch
,
with:
Entities
::
RepoBranch
,
project:
user_project
end
end
# Protect a single branch
#
# Note: The internal data model moved from `developers_can_{merge,push}` to `allowed_to_{merge,push}`
# Note: The internal data model moved from `developers_can_{merge,push}` to `allowed_to_{merge,push}`
# in `gitlab-org/gitlab-ce!5081`. The API interface has not been changed (to maintain compatibility),
# in `gitlab-org/gitlab-ce!5081`. The API interface has not been changed (to maintain compatibility),
# but it works with the changed data model to infer `developers_can_merge` and `developers_can_push`.
# but it works with the changed data model to infer `developers_can_merge` and `developers_can_push`.
#
desc
'Protect a single branch'
do
# Parameters:
success
Entities
::
RepoBranch
# id (required) - The ID of a project
end
# branch (required) - The name of the branch
params
do
# developers_can_push (optional) - Flag if developers can push to that branch
requires
:branch
,
type:
String
,
regexp:
/.+/
,
desc:
'The name of the branch'
# developers_can_merge (optional) - Flag if developers can merge to that branch
optional
:developers_can_push
,
type:
Boolean
,
desc:
'Flag if developers can push to that branch'
# Example Request:
optional
:developers_can_merge
,
type:
Boolean
,
desc:
'Flag if developers can merge to that branch'
# PUT /projects/:id/repository/branches/:branch/protect
end
put
':id/repository/branches/:branch/protect'
,
put
':id/repository/branches/:branch/protect'
do
requirements:
{
branch:
/.+/
}
do
authorize_admin_project
authorize_admin_project
@branch
=
user_project
.
repository
.
find_branch
(
params
[
:branch
])
branch
=
user_project
.
repository
.
find_branch
(
params
[
:branch
])
not_found!
(
'Branch'
)
unless
@branch
not_found!
(
'Branch'
)
unless
branch
protected_branch
=
user_project
.
protected_branches
.
find_by
(
name:
@branch
.
name
)
protected_branch
=
user_project
.
protected_branches
.
find_by
(
name:
branch
.
name
)
protected_branch_params
=
{
protected_branch_params
=
{
name:
@
branch
.
name
,
name:
branch
.
name
,
developers_can_push:
to_boolean
(
params
[
:developers_can_push
])
,
developers_can_push:
params
[
:developers_can_push
]
,
developers_can_merge:
to_boolean
(
params
[
:developers_can_merge
])
developers_can_merge:
params
[
:developers_can_merge
]
}
}
service_args
=
[
user_project
,
current_user
,
protected_branch_params
]
service_args
=
[
user_project
,
current_user
,
protected_branch_params
]
...
@@ -69,39 +66,36 @@ module API
...
@@ -69,39 +66,36 @@ module API
end
end
if
protected_branch
.
valid?
if
protected_branch
.
valid?
present
@
branch
,
with:
Entities
::
RepoBranch
,
project:
user_project
present
branch
,
with:
Entities
::
RepoBranch
,
project:
user_project
else
else
render_api_error!
(
protected_branch
.
errors
.
full_messages
,
422
)
render_api_error!
(
protected_branch
.
errors
.
full_messages
,
422
)
end
end
end
end
# Unprotect a single branch
desc
'Unprotect a single branch'
do
#
success
Entities
::
RepoBranch
# Parameters:
end
# id (required) - The ID of a project
params
do
# branch (required) - The name of the branch
requires
:branch
,
type:
String
,
regexp:
/.+/
,
desc:
'The name of the branch'
# Example Request:
end
# PUT /projects/:id/repository/branches/:branch/unprotect
put
':id/repository/branches/:branch/unprotect'
do
put
':id/repository/branches/:branch/unprotect'
,
requirements:
{
branch:
/.+/
}
do
authorize_admin_project
authorize_admin_project
@
branch
=
user_project
.
repository
.
find_branch
(
params
[
:branch
])
branch
=
user_project
.
repository
.
find_branch
(
params
[
:branch
])
not_found!
(
"Branch"
)
unless
@
branch
not_found!
(
"Branch"
)
unless
branch
protected_branch
=
user_project
.
protected_branches
.
find_by
(
name:
@
branch
.
name
)
protected_branch
=
user_project
.
protected_branches
.
find_by
(
name:
branch
.
name
)
protected_branch
.
destroy
if
protected_branch
protected_branch
.
destroy
if
protected_branch
present
@
branch
,
with:
Entities
::
RepoBranch
,
project:
user_project
present
branch
,
with:
Entities
::
RepoBranch
,
project:
user_project
end
end
# Create branch
desc
'Create branch'
do
#
success
Entities
::
RepoBranch
# Parameters:
end
# id (required) - The ID of a project
params
do
# branch_name (required) - The name of the branch
requires
:branch_name
,
type:
String
,
desc:
'The name of the branch'
# ref (required) - Create branch from commit sha or existing branch
requires
:ref
,
type:
String
,
desc:
'Create branch from commit sha or existing branch'
# Example Request:
end
# POST /projects/:id/repository/branches
post
":id/repository/branches"
do
post
":id/repository/branches"
do
authorize_push_project
authorize_push_project
result
=
CreateBranchService
.
new
(
user_project
,
current_user
).
result
=
CreateBranchService
.
new
(
user_project
,
current_user
).
...
@@ -116,16 +110,13 @@ module API
...
@@ -116,16 +110,13 @@ module API
end
end
end
end
# Delete branch
desc
'Delete a branch'
#
params
do
# Parameters:
requires
:branch
,
type:
String
,
regexp:
/.+/
,
desc:
'The name of the branch'
# id (required) - The ID of a project
end
# branch (required) - The name of the branch
delete
":id/repository/branches/:branch"
do
# Example Request:
# DELETE /projects/:id/repository/branches/:branch
delete
":id/repository/branches/:branch"
,
requirements:
{
branch:
/.+/
}
do
authorize_push_project
authorize_push_project
result
=
DeleteBranchService
.
new
(
user_project
,
current_user
).
result
=
DeleteBranchService
.
new
(
user_project
,
current_user
).
execute
(
params
[
:branch
])
execute
(
params
[
:branch
])
...
...
spec/requests/api/branches_spec.rb
浏览文件 @
a83d4d01
...
@@ -95,18 +95,6 @@ describe API::API, api: true do
...
@@ -95,18 +95,6 @@ describe API::API, api: true do
expect
(
json_response
[
'developers_can_push'
]).
to
eq
(
true
)
expect
(
json_response
[
'developers_can_push'
]).
to
eq
(
true
)
expect
(
json_response
[
'developers_can_merge'
]).
to
eq
(
true
)
expect
(
json_response
[
'developers_can_merge'
]).
to
eq
(
true
)
end
end
it
'protects a single branch and developers cannot push and merge'
do
put
api
(
"/projects/
#{
project
.
id
}
/repository/branches/
#{
branch_name
}
/protect"
,
user
),
developers_can_push:
'tru'
,
developers_can_merge:
'tr'
expect
(
response
).
to
have_http_status
(
200
)
expect
(
json_response
[
'name'
]).
to
eq
(
branch_name
)
expect
(
json_response
[
'commit'
][
'id'
]).
to
eq
(
branch_sha
)
expect
(
json_response
[
'protected'
]).
to
eq
(
true
)
expect
(
json_response
[
'developers_can_push'
]).
to
eq
(
false
)
expect
(
json_response
[
'developers_can_merge'
]).
to
eq
(
false
)
end
end
end
context
'for an existing protected branch'
do
context
'for an existing protected branch'
do
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录