Added methods to protect and unprotect branches
This commit is contained in:
parent
df6db81e2a
commit
2c7554e897
|
@ -33,7 +33,8 @@ Parameters:
|
|||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
}
|
||||
},
|
||||
"protected": true
|
||||
}
|
||||
]
|
||||
```
|
||||
|
@ -73,7 +74,88 @@ Parameters:
|
|||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
}
|
||||
},
|
||||
"protected": true
|
||||
}
|
||||
```
|
||||
|
||||
## Protect a project repository branch
|
||||
|
||||
Protect a single project repository branch.
|
||||
|
||||
```
|
||||
PUT /projects/:id/repository/branches/:branch/protect
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
+ `id` (required) - The ID of a project
|
||||
+ `branch` (required) - The name of the branch
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "master",
|
||||
"commit": {
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"parents": [
|
||||
{
|
||||
"id": "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
}
|
||||
],
|
||||
"tree": "46e82de44b1061621357f24c05515327f2795a95",
|
||||
"message": "add projects API",
|
||||
"author": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"committer": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
},
|
||||
"protected": true
|
||||
}
|
||||
```
|
||||
|
||||
## Unprotect a project repository branch
|
||||
|
||||
Unprotect a single project repository branch.
|
||||
|
||||
```
|
||||
PUT /projects/:id/repository/branches/:branch/unprotect
|
||||
```
|
||||
|
||||
Parameters:
|
||||
|
||||
+ `id` (required) - The ID of a project
|
||||
+ `branch` (required) - The name of the branch
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "master",
|
||||
"commit": {
|
||||
"id": "7b5c3cc8be40ee161ae89a06bba6229da1032a0c",
|
||||
"parents": [
|
||||
{
|
||||
"id": "4ad91d3c1144c406e50c7b33bae684bd6837faf8"
|
||||
}
|
||||
],
|
||||
"tree": "46e82de44b1061621357f24c05515327f2795a95",
|
||||
"message": "add projects API",
|
||||
"author": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"committer": {
|
||||
"name": "John Smith",
|
||||
"email": "john@example.com"
|
||||
},
|
||||
"authored_date": "2012-06-27T05:51:39-07:00",
|
||||
"committed_date": "2012-06-28T03:44:20-07:00"
|
||||
},
|
||||
"protected": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -110,7 +192,8 @@ Parameters:
|
|||
},
|
||||
"authored_date": "2012-05-28T04:42:42-07:00",
|
||||
"committed_date": "2012-05-28T04:42:42-07:00"
|
||||
}
|
||||
},
|
||||
"protected": null
|
||||
}
|
||||
]
|
||||
```
|
||||
|
|
|
@ -33,6 +33,11 @@ module Gitlab
|
|||
|
||||
class RepoObject < Grape::Entity
|
||||
expose :name, :commit
|
||||
expose :protected do |repo, options|
|
||||
if options[:project]
|
||||
options[:project].protected_branch? repo.name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class RepoCommit < Grape::Entity
|
||||
|
|
|
@ -218,7 +218,7 @@ module Gitlab
|
|||
# Example Request:
|
||||
# GET /projects/:id/repository/branches
|
||||
get ":id/repository/branches" do
|
||||
present user_project.repo.heads.sort_by(&:name), with: Entities::RepoObject
|
||||
present user_project.repo.heads.sort_by(&:name), with: Entities::RepoObject, project: user_project
|
||||
end
|
||||
|
||||
# Get a single branch
|
||||
|
@ -230,7 +230,43 @@ module Gitlab
|
|||
# GET /projects/:id/repository/branches/:branch
|
||||
get ":id/repository/branches/:branch" do
|
||||
@branch = user_project.repo.heads.find { |item| item.name == params[:branch] }
|
||||
present @branch, with: Entities::RepoObject
|
||||
present @branch, with: Entities::RepoObject, project: user_project
|
||||
end
|
||||
|
||||
# Protect a single branch
|
||||
#
|
||||
# Parameters:
|
||||
# id (required) - The ID of a project
|
||||
# branch (required) - The name of the branch
|
||||
# Example Request:
|
||||
# PUT /projects/:id/repository/branches/:branch/protect
|
||||
put ":id/repository/branches/:branch/protect" do
|
||||
@branch = user_project.repo.heads.find { |item| item.name == params[:branch] }
|
||||
protected = user_project.protected_branches.find_by_name(@branch.name)
|
||||
|
||||
unless protected
|
||||
user_project.protected_branches.create(:name => @branch.name)
|
||||
end
|
||||
|
||||
present @branch, with: Entities::RepoObject, project: user_project
|
||||
end
|
||||
|
||||
# Unprotect a single branch
|
||||
#
|
||||
# Parameters:
|
||||
# id (required) - The ID of a project
|
||||
# branch (required) - The name of the branch
|
||||
# Example Request:
|
||||
# PUT /projects/:id/repository/branches/:branch/unprotect
|
||||
put ":id/repository/branches/:branch/unprotect" do
|
||||
@branch = user_project.repo.heads.find { |item| item.name == params[:branch] }
|
||||
protected = user_project.protected_branches.find_by_name(@branch.name)
|
||||
|
||||
if protected
|
||||
protected.destroy
|
||||
end
|
||||
|
||||
present @branch, with: Entities::RepoObject, project: user_project
|
||||
end
|
||||
|
||||
# Get a project repository tags
|
||||
|
|
|
@ -107,6 +107,29 @@ describe Gitlab::API do
|
|||
|
||||
json_response['name'].should == 'new_design'
|
||||
json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1'
|
||||
json_response['protected'].should == false
|
||||
end
|
||||
end
|
||||
|
||||
describe "PUT /projects/:id/repository/branches/:branch/protect" do
|
||||
it "should protect a single branch" do
|
||||
put api("/projects/#{project.id}/repository/branches/new_design/protect", user)
|
||||
response.status.should == 200
|
||||
|
||||
json_response['name'].should == 'new_design'
|
||||
json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1'
|
||||
json_response['protected'].should == true
|
||||
end
|
||||
end
|
||||
|
||||
describe "PUT /projects/:id/repository/branches/:branch/unprotect" do
|
||||
it "should unprotect a single branch" do
|
||||
put api("/projects/#{project.id}/repository/branches/new_design/unprotect", user)
|
||||
response.status.should == 200
|
||||
|
||||
json_response['name'].should == 'new_design'
|
||||
json_response['commit']['id'].should == '621491c677087aa243f165eab467bfdfbee00be1'
|
||||
json_response['protected'].should == false
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue