BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
4de883bc
Commit
4de883bc
authored
Oct 15, 2016
by
Z.J. van de Weg
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use GrapeDSL for commits
parent
cb8654e8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
69 additions
and
60 deletions
+69
-60
commits.rb
lib/api/commits.rb
+69
-60
No files found.
lib/api/commits.rb
View file @
4de883bc
...
...
@@ -6,33 +6,40 @@ module API
before
{
authenticate!
}
before
{
authorize!
:download_code
,
user_project
}
params
do
requires
:id
,
type:
String
,
desc:
'The ID of a project'
end
resource
:projects
do
# Get a project repository commits
#
# Parameters:
# id (required) - The ID of a project
# ref_name (optional) - The name of a repository branch or tag, if not given the default branch is used
# since (optional) - Only commits after or in this date will be returned
# until (optional) - Only commits before or in this date will be returned
# Example Request:
# GET /projects/:id/repository/commits
desc
'Get a project repository commits'
do
success
Entities
::
RepoCommit
end
params
do
optional
:ref_name
,
type:
String
,
desc:
'The name of a repository branch or tag, if not given the default branch is used'
optional
:since
,
type:
String
,
desc:
'Only commits after or in this date will be returned'
optional
:until
,
type:
String
,
desc:
'Only commits before or in this date will be returned'
optional
:page
,
type:
Integer
,
default:
0
,
desc:
'The page for pagination'
optional
:per_page
,
type:
Integer
,
default:
20
,
desc:
'The number of results per page'
end
get
":id/repository/commits"
do
# TODO remove the next line for 9.0, use DateTime type in the params block
datetime_attributes!
:since
,
:until
page
=
(
params
[
:page
]
||
0
).
to_i
per_page
=
(
params
[
:per_page
]
||
20
).
to_i
ref
=
params
[
:ref_name
]
||
user_project
.
try
(
:default_branch
)
||
'master'
after
=
params
[
:since
]
before
=
params
[
:until
]
offset
=
params
[
:page
]
*
params
[
:per_page
]
commits
=
user_project
.
repository
.
commits
(
ref
,
limit:
params
[
:per_page
],
offset:
offset
,
after:
params
[
:since
],
before:
params
[
:until
])
commits
=
user_project
.
repository
.
commits
(
ref
,
limit:
per_page
,
offset:
page
*
per_page
,
after:
after
,
before:
before
)
present
commits
,
with:
Entities
::
RepoCommit
end
desc
'Commit multiple file changes as one commit'
do
success
Entities
::
RepoCommitDetail
detail
'This feature was introduced in GitLab 8.13'
end
params
do
requires
:id
,
type:
Integer
,
desc:
'The project ID'
requires
:branch_name
,
type:
String
,
desc:
'The name of branch'
...
...
@@ -41,7 +48,6 @@ module API
optional
:author_email
,
type:
String
,
desc:
'Author email for commit'
optional
:author_name
,
type:
String
,
desc:
'Author name for commit'
end
post
":id/repository/commits"
do
authorize!
:push_code
,
user_project
...
...
@@ -65,79 +71,82 @@ module API
end
end
# Get a specific commit of a project
#
# 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
desc
'Get a specific commit of a project'
do
success
Entities
::
RepoCommitDetail
failure
[[
404
,
'Not Found'
]]
end
params
do
requires
:sha
,
type:
String
,
desc:
'A commit sha, or the name of a branch or tag'
end
get
":id/repository/commits/:sha"
do
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
sha
)
commit
=
user_project
.
commit
(
params
[
:sha
])
not_found!
"Commit"
unless
commit
present
commit
,
with:
Entities
::
RepoCommitDetail
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/commits/:sha/diff
desc
'Get the diff for a specific commit of a project'
do
failure
[[
404
,
'Not Found'
]]
end
params
do
requires
:sha
,
type:
String
,
desc:
'A commit sha, or the name of a branch or tag'
end
get
":id/repository/commits/:sha/diff"
do
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
sha
)
commit
=
user_project
.
commit
(
params
[
:sha
])
not_found!
"Commit"
unless
commit
commit
.
raw_diffs
.
to_a
end
# Get a commit's comments
#
# Parameters:
# id (required) - The ID of a project
# sha (required) - The commit hash
# Examples:
# GET /projects/:id/repository/commits/:sha/comments
desc
"Get a commit's comments"
do
success
Entities
::
CommitNote
failure
[[
404
,
'Not Found'
]]
end
params
do
requires
:sha
,
type:
String
,
desc:
'A commit sha, or the name of a branch or tag'
optional
:per_page
,
type:
Integer
,
desc:
'The amount of items per page for paginaion'
optional
:page
,
type:
Integer
,
desc:
'The page number for pagination'
end
get
':id/repository/commits/:sha/comments'
do
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
sha
)
commit
=
user_project
.
commit
(
params
[
:sha
])
not_found!
'Commit'
unless
commit
notes
=
Note
.
where
(
commit_id:
commit
.
id
).
order
(
:created_at
)
present
paginate
(
notes
),
with:
Entities
::
CommitNote
end
# Post comment to commit
#
# Parameters:
# id (required) - The ID of a project
# sha (required) - The commit hash
# note (required) - Text of comment
# path (optional) - The file path
# line (optional) - The line number
# line_type (optional) - The type of line (new or old)
# Examples:
# POST /projects/:id/repository/commits/:sha/comments
desc
'Post comment to commit'
do
success
Entities
::
CommitNote
end
params
do
requires
:sha
,
type:
String
,
regexp:
/\A\h{6,40}\z/
,
desc:
"The commit's SHA"
requires
:note
,
type:
String
,
desc:
'The text of the comment'
optional
:path
,
type:
String
,
desc:
'The file path'
given
:path
do
requires
:line
,
type:
Integer
,
desc:
'The line number'
requires
:line_type
,
type:
String
,
values:
[
'new'
,
'old'
],
default:
'new'
,
desc:
'The type of the line'
end
end
post
':id/repository/commits/:sha/comments'
do
required_attributes!
[
:note
]
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
sha
)
commit
=
user_project
.
commit
(
params
[
:sha
])
not_found!
'Commit'
unless
commit
opts
=
{
note:
params
[
:note
],
noteable_type:
'Commit'
,
commit_id:
commit
.
id
}
if
params
[
:path
]
&&
params
[
:line
]
&&
params
[
:line_type
]
if
params
[
:path
]
commit
.
raw_diffs
(
all_diffs:
true
).
each
do
|
diff
|
next
unless
diff
.
new_path
==
params
[
:path
]
lines
=
Gitlab
::
Diff
::
Parser
.
new
.
parse
(
diff
.
diff
.
each_line
)
lines
.
each
do
|
line
|
next
unless
line
.
new_pos
==
params
[
:line
]
.
to_i
&&
line
.
type
==
params
[
:line_type
]
next
unless
line
.
new_pos
==
params
[
:line
]
&&
line
.
type
==
params
[
:line_type
]
break
opts
[
:line_code
]
=
Gitlab
::
Diff
::
LineCode
.
generate
(
diff
.
new_path
,
line
.
new_pos
,
line
.
old_pos
)
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