Adds feature: get a diff via API.
This commit is contained in:
parent
2b36dee644
commit
d139cc6b32
3 changed files with 64 additions and 0 deletions
|
@ -239,6 +239,34 @@ Parameters:
|
||||||
]
|
]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Get the diff of a commit
|
||||||
|
|
||||||
|
Get the diff of a commit in a project.
|
||||||
|
|
||||||
|
```
|
||||||
|
GET /projects/:id/repository/commit/:sha
|
||||||
|
```
|
||||||
|
|
||||||
|
Parameters:
|
||||||
|
|
||||||
|
+ `id` (required) - The ID of a project
|
||||||
|
+ `sha` (required) - The name of a repository branch or tag or if not given the default branch
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"diff": "--- a/doc/update/5.4-to-6.0.md\n+++ b/doc/update/5.4-to-6.0.md\n@@ -71,6 +71,8 @@\n sudo -u git -H bundle exec rake migrate_keys RAILS_ENV=production\n sudo -u git -H bundle exec rake migrate_inline_notes RAILS_ENV=production\n \n+sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production\n+\n ```\n \n ### 6. Update config files",
|
||||||
|
"new_path": "doc/update/5.4-to-6.0.md",
|
||||||
|
"old_path": "doc/update/5.4-to-6.0.md",
|
||||||
|
"a_mode": null,
|
||||||
|
"b_mode": "100644",
|
||||||
|
"new_file": false,
|
||||||
|
"renamed_file": false,
|
||||||
|
"deleted_file": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
## List repository tree
|
## List repository tree
|
||||||
|
|
||||||
Get a list of repository files and directories in a project.
|
Get a list of repository files and directories in a project.
|
||||||
|
|
|
@ -102,6 +102,20 @@ module API
|
||||||
present commits, with: Entities::RepoCommit
|
present commits, with: Entities::RepoCommit
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Get a specific commit of a project
|
||||||
|
#
|
||||||
|
# Parameters:
|
||||||
|
# id (required) - The ID of a project
|
||||||
|
# sha (required) - The commit or branch name
|
||||||
|
# Example Request:
|
||||||
|
# GET /projects/:id/repository/commit/:sha
|
||||||
|
get ":id/repository/commit/:sha" do
|
||||||
|
authorize! :download_code, user_project
|
||||||
|
sha = params[:sha]
|
||||||
|
result = CommitLoadContext.new(user_project, current_user, {id: sha}).execute
|
||||||
|
result[:commit].diffs
|
||||||
|
end
|
||||||
|
|
||||||
# Get a project repository tree
|
# Get a project repository tree
|
||||||
#
|
#
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
|
|
@ -112,6 +112,28 @@ describe API::API do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "GET /projects:id/repository/commit/:sha" do
|
||||||
|
context "authorized user" do
|
||||||
|
before { project.team << [user2, :reporter] }
|
||||||
|
|
||||||
|
it "should return the diff of the selected commit" do
|
||||||
|
get api("/projects/#{project.id}/repository/commit/#{project.repository.commit.id}", user)
|
||||||
|
response.status.should == 200
|
||||||
|
|
||||||
|
json_response.should be_an Array
|
||||||
|
json_response.length.should >= 1
|
||||||
|
json_response.first.keys.should include "diff"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "unauthorized user" do
|
||||||
|
it "should not return the diff of the selected commit" do
|
||||||
|
get api("/projects/#{project.id}/repository/commit/#{project.repository.commit.id}")
|
||||||
|
response.status.should == 401
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "GET /projects/:id/repository/tree" do
|
describe "GET /projects/:id/repository/tree" do
|
||||||
context "authorized user" do
|
context "authorized user" do
|
||||||
before { project.team << [user2, :reporter] }
|
before { project.team << [user2, :reporter] }
|
||||||
|
|
Loading…
Reference in a new issue