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
0
Merge Requests
0
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
Jérome Perrin
gitlab-ce
Commits
ec7b6b9f
Commit
ec7b6b9f
authored
Oct 18, 2016
by
Rémy Coutable
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'zj-grapify-commits' into 'master'
Use GrapeDSL for commits See merge request !6914
parents
146e0cbc
4de883bc
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
69 additions
and
60 deletions
+69
-60
lib/api/commits.rb
lib/api/commits.rb
+69
-60
No files found.
lib/api/commits.rb
View file @
ec7b6b9f
...
...
@@ -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