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:
]
```
## 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 in a project.
```
GET /projects/:id/repository/commit
/:sha
GET /projects/:id/repository/commit
s/:sha/diff
```
Parameters:
...
...
@@ -323,7 +348,7 @@ Parameters:
Get the raw file contents for a file.
```
GET /projects/:id/repository/
commits/:sha/blob
GET /projects/:id/repository/
blobs/:sha
```
Parameters:
...
...
lib/api/repositories.rb
View file @
079d3a5d
...
...
@@ -106,13 +106,29 @@ module API
#
# Parameters:
# 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
# Example Request:
# GET /projects/:id/repository/commit
/:sha
get
":id/repository/commit
/:sha
"
do
# GET /projects/:id/repository/commit
s/:sha/diff
get
":id/repository/commit
s/:sha/diff
"
do
authorize!
:download_code
,
user_project
sha
=
params
[
:sha
]
result
=
CommitLoadContext
.
new
(
user_project
,
current_user
,
{
id:
sha
}).
execute
not_found!
"Commit"
unless
result
[
:commit
]
result
[
:commit
].
diffs
end
...
...
@@ -148,8 +164,8 @@ module API
# sha (required) - The commit or branch name
# filepath (required) - The path to the file to display
# Example Request:
# GET /projects/:id/repository/
commits/:sha/blob
get
":id/repository/commits/:sha/blob"
do
# GET /projects/:id/repository/
blobs/:sha
get
[
":id/repository/blobs/:sha"
,
":id/repository/commits/:sha/blob"
]
do
authorize!
:download_code
,
user_project
required_attributes!
[
:filepath
]
...
...
spec/requests/api/repositories_spec.rb
View file @
079d3a5d
...
...
@@ -112,23 +112,51 @@ describe API::API do
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
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
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/commit
s/
#{
project
.
repository
.
commit
.
id
}
/diff
"
,
user
)
response
.
status
.
should
==
200
json_response
.
should
be_an
Array
json_response
.
length
.
should
>=
1
json_response
.
first
.
keys
.
should
include
"diff"
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
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
}
"
)
get
api
(
"/projects/
#{
project
.
id
}
/repository/commit
s/
#{
project
.
repository
.
commit
.
id
}
/diff
"
)
response
.
status
.
should
==
401
end
end
...
...
@@ -157,25 +185,33 @@ describe API::API do
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
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
end
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
end
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
end
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
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
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