Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
079d3a5d
Commit
079d3a5d
authored
Aug 29, 2013
by
Dmitriy Zaporozhets
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4906 from alexvh/standardize_diff_api_url
Standardize recently added commit diff api url
parents
4aa2d16a
59f428dc
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
91 additions
and
14 deletions
+91
-14
doc/api/repositories.md
doc/api/repositories.md
+27
-2
lib/api/repositories.rb
lib/api/repositories.rb
+20
-4
spec/requests/api/repositories_spec.rb
spec/requests/api/repositories_spec.rb
+44
-8
No files found.
doc/api/repositories.md
View file @
079d3a5d
...
@@ -239,12 +239,37 @@ Parameters:
...
@@ -239,12 +239,37 @@ Parameters:
]
]
```
```
## Get a single commit
Get a specific commit identified by the commit hash or name of a branch or tag.
```
GET /projects/:id/repository/commits/:sha
```
Parameters:
+
`id`
(required) - The ID of a project
+
`sha`
(required) - The commit hash or name of a repository branch or tag
```
json
{
"id"
:
"6104942438c14ec7bd21c6cd5bd995272b3faff6"
,
"short_id"
:
"6104942438c"
,
"title"
:
"Sanitize for network graph"
,
"author_name"
:
"randx"
,
"author_email"
:
"dmitriy.zaporozhets@gmail.com"
,
"created_at"
:
"2012-09-20T09:06:12+03:00"
}
```
## Get the diff of a commit
## Get the diff of a commit
Get the diff of a commit in a project.
Get the diff of a commit in a project.
```
```
GET /projects/:id/repository/commit
/:sha
GET /projects/:id/repository/commit
s/:sha/diff
```
```
Parameters:
Parameters:
...
@@ -323,7 +348,7 @@ Parameters:
...
@@ -323,7 +348,7 @@ Parameters:
Get the raw file contents for a file.
Get the raw file contents for a file.
```
```
GET /projects/:id/repository/
commits/:sha/blob
GET /projects/:id/repository/
blobs/:sha
```
```
Parameters:
Parameters:
...
...
lib/api/repositories.rb
View file @
079d3a5d
...
@@ -106,13 +106,29 @@ module API
...
@@ -106,13 +106,29 @@ module API
#
#
# Parameters:
# Parameters:
# id (required) - The ID of a project
# id (required) - The ID of a project
# sha (required) - The commit hash or name of a repository branch or tag
# Example Request:
# GET /projects/:id/repository/commits/:sha
get
":id/repository/commits/:sha"
do
authorize!
:download_code
,
user_project
sha
=
params
[
:sha
]
commit
=
user_project
.
repository
.
commit
(
sha
)
not_found!
"Commit"
unless
commit
present
commit
,
with:
Entities
::
RepoCommit
end
# Get the diff for a specific commit of a project
#
# Parameters:
# id (required) - The ID of a project
# sha (required) - The commit or branch name
# sha (required) - The commit or branch name
# Example Request:
# Example Request:
# GET /projects/:id/repository/commit
/:sha
# GET /projects/:id/repository/commit
s/:sha/diff
get
":id/repository/commit
/:sha
"
do
get
":id/repository/commit
s/:sha/diff
"
do
authorize!
:download_code
,
user_project
authorize!
:download_code
,
user_project
sha
=
params
[
:sha
]
sha
=
params
[
:sha
]
result
=
CommitLoadContext
.
new
(
user_project
,
current_user
,
{
id:
sha
}).
execute
result
=
CommitLoadContext
.
new
(
user_project
,
current_user
,
{
id:
sha
}).
execute
not_found!
"Commit"
unless
result
[
:commit
]
result
[
:commit
].
diffs
result
[
:commit
].
diffs
end
end
...
@@ -148,8 +164,8 @@ module API
...
@@ -148,8 +164,8 @@ module API
# sha (required) - The commit or branch name
# sha (required) - The commit or branch name
# filepath (required) - The path to the file to display
# filepath (required) - The path to the file to display
# Example Request:
# Example Request:
# GET /projects/:id/repository/
commits/:sha/blob
# GET /projects/:id/repository/
blobs/:sha
get
":id/repository/commits/:sha/blob"
do
get
[
":id/repository/blobs/:sha"
,
":id/repository/commits/:sha/blob"
]
do
authorize!
:download_code
,
user_project
authorize!
:download_code
,
user_project
required_attributes!
[
:filepath
]
required_attributes!
[
:filepath
]
...
...
spec/requests/api/repositories_spec.rb
View file @
079d3a5d
...
@@ -112,23 +112,51 @@ describe API::API do
...
@@ -112,23 +112,51 @@ describe API::API do
end
end
end
end
describe
"GET /projects:id/repository/commit/:sha"
do
describe
"GET /projects:id/repository/commits/:sha"
do
context
"authorized user"
do
it
"should return a commit by sha"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/commits/
#{
project
.
repository
.
commit
.
id
}
"
,
user
)
response
.
status
.
should
==
200
json_response
[
'id'
].
should
==
project
.
repository
.
commit
.
id
json_response
[
'title'
].
should
==
project
.
repository
.
commit
.
title
end
it
"should return a 404 error if not found"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/commits/invalid_sha"
,
user
)
response
.
status
.
should
==
404
end
end
context
"unauthorized user"
do
it
"should not return the selected commit"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/commits/
#{
project
.
repository
.
commit
.
id
}
"
)
response
.
status
.
should
==
401
end
end
end
describe
"GET /projects:id/repository/commits/:sha/diff"
do
context
"authorized user"
do
context
"authorized user"
do
before
{
project
.
team
<<
[
user2
,
:reporter
]
}
before
{
project
.
team
<<
[
user2
,
:reporter
]
}
it
"should return the diff of the selected commit"
do
it
"should return the diff of the selected commit"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/commit
/
#{
project
.
repository
.
commit
.
id
}
"
,
user
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/commit
s/
#{
project
.
repository
.
commit
.
id
}
/diff
"
,
user
)
response
.
status
.
should
==
200
response
.
status
.
should
==
200
json_response
.
should
be_an
Array
json_response
.
should
be_an
Array
json_response
.
length
.
should
>=
1
json_response
.
length
.
should
>=
1
json_response
.
first
.
keys
.
should
include
"diff"
json_response
.
first
.
keys
.
should
include
"diff"
end
end
it
"should return a 404 error if invalid commit"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/commits/invalid_sha/diff"
,
user
)
response
.
status
.
should
==
404
end
end
end
context
"unauthorized user"
do
context
"unauthorized user"
do
it
"should not return the diff of the selected commit"
do
it
"should not return the diff of the selected commit"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/commit
/
#{
project
.
repository
.
commit
.
id
}
"
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/commit
s/
#{
project
.
repository
.
commit
.
id
}
/diff
"
)
response
.
status
.
should
==
401
response
.
status
.
should
==
401
end
end
end
end
...
@@ -157,25 +185,33 @@ describe API::API do
...
@@ -157,25 +185,33 @@ describe API::API do
end
end
end
end
describe
"GET /projects/:id/repository/
commits/:sha/blob
"
do
describe
"GET /projects/:id/repository/
blobs/:sha
"
do
it
"should get the raw file contents"
do
it
"should get the raw file contents"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/
commits/master/blob
?filepath=README.md"
,
user
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/
blobs/master
?filepath=README.md"
,
user
)
response
.
status
.
should
==
200
response
.
status
.
should
==
200
end
end
it
"should return 404 for invalid branch_name"
do
it
"should return 404 for invalid branch_name"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/
commits/invalid_branch_name/blob
?filepath=README.md"
,
user
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/
blobs/invalid_branch_name
?filepath=README.md"
,
user
)
response
.
status
.
should
==
404
response
.
status
.
should
==
404
end
end
it
"should return 404 for invalid file"
do
it
"should return 404 for invalid file"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/
commits/master/blob
?filepath=README.invalid"
,
user
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/
blobs/master
?filepath=README.invalid"
,
user
)
response
.
status
.
should
==
404
response
.
status
.
should
==
404
end
end
it
"should return a 400 error if filepath is missing"
do
it
"should return a 400 error if filepath is missing"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/
commits/master/blob
"
,
user
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/
blobs/master
"
,
user
)
response
.
status
.
should
==
400
response
.
status
.
should
==
400
end
end
end
end
describe
"GET /projects/:id/repository/commits/:sha/blob"
do
it
"should get the raw file contents"
do
get
api
(
"/projects/
#{
project
.
id
}
/repository/commits/master/blob?filepath=README.md"
,
user
)
response
.
status
.
should
==
200
end
end
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment