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
...
@@ -6,33 +6,40 @@ module API
before
{
authenticate!
}
before
{
authenticate!
}
before
{
authorize!
:download_code
,
user_project
}
before
{
authorize!
:download_code
,
user_project
}
params
do
requires
:id
,
type:
String
,
desc:
'The ID of a project'
end
resource
:projects
do
resource
:projects
do
# Get a project repository commits
desc
'Get a project repository commits'
do
#
success
Entities
::
RepoCommit
# Parameters:
end
# id (required) - The ID of a project
params
do
# ref_name (optional) - The name of a repository branch or tag, if not given the default branch is used
optional
:ref_name
,
type:
String
,
desc:
'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
optional
:since
,
type:
String
,
desc:
'Only commits after or in this date will be returned'
# until (optional) - Only commits before or in this date will be returned
optional
:until
,
type:
String
,
desc:
'Only commits before or in this date will be returned'
# Example Request:
optional
:page
,
type:
Integer
,
default:
0
,
desc:
'The page for pagination'
# GET /projects/:id/repository/commits
optional
:per_page
,
type:
Integer
,
default:
20
,
desc:
'The number of results per page'
end
get
":id/repository/commits"
do
get
":id/repository/commits"
do
# TODO remove the next line for 9.0, use DateTime type in the params block
datetime_attributes!
:since
,
:until
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'
ref
=
params
[
:ref_name
]
||
user_project
.
try
(
:default_branch
)
||
'master'
after
=
params
[
:since
]
offset
=
params
[
:page
]
*
params
[
:per_page
]
before
=
params
[
:until
]
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
present
commits
,
with:
Entities
::
RepoCommit
end
end
desc
'Commit multiple file changes as one commit'
do
desc
'Commit multiple file changes as one commit'
do
success
Entities
::
RepoCommitDetail
detail
'This feature was introduced in GitLab 8.13'
detail
'This feature was introduced in GitLab 8.13'
end
end
params
do
params
do
requires
:id
,
type:
Integer
,
desc:
'The project ID'
requires
:id
,
type:
Integer
,
desc:
'The project ID'
requires
:branch_name
,
type:
String
,
desc:
'The name of branch'
requires
:branch_name
,
type:
String
,
desc:
'The name of branch'
...
@@ -41,7 +48,6 @@ module API
...
@@ -41,7 +48,6 @@ module API
optional
:author_email
,
type:
String
,
desc:
'Author email for commit'
optional
:author_email
,
type:
String
,
desc:
'Author email for commit'
optional
:author_name
,
type:
String
,
desc:
'Author name for commit'
optional
:author_name
,
type:
String
,
desc:
'Author name for commit'
end
end
post
":id/repository/commits"
do
post
":id/repository/commits"
do
authorize!
:push_code
,
user_project
authorize!
:push_code
,
user_project
...
@@ -65,79 +71,82 @@ module API
...
@@ -65,79 +71,82 @@ module API
end
end
end
end
# Get a specific commit of a project
desc
'Get a specific commit of a project'
do
#
success
Entities
::
RepoCommitDetail
# Parameters:
failure
[[
404
,
'Not Found'
]]
# id (required) - The ID of a project
end
# sha (required) - The commit hash or name of a repository branch or tag
params
do
# Example Request:
requires
:sha
,
type:
String
,
desc:
'A commit sha, or the name of a branch or tag'
# GET /projects/:id/repository/commits/:sha
end
get
":id/repository/commits/:sha"
do
get
":id/repository/commits/:sha"
do
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
params
[
:sha
])
commit
=
user_project
.
commit
(
sha
)
not_found!
"Commit"
unless
commit
not_found!
"Commit"
unless
commit
present
commit
,
with:
Entities
::
RepoCommitDetail
present
commit
,
with:
Entities
::
RepoCommitDetail
end
end
# Get the diff for a specific commit of a project
desc
'Get the diff for a specific commit of a project'
do
#
failure
[[
404
,
'Not Found'
]]
# Parameters:
end
# id (required) - The ID of a project
params
do
# sha (required) - The commit or branch name
requires
:sha
,
type:
String
,
desc:
'A commit sha, or the name of a branch or tag'
# Example Request:
end
# GET /projects/:id/repository/commits/:sha/diff
get
":id/repository/commits/:sha/diff"
do
get
":id/repository/commits/:sha/diff"
do
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
params
[
:sha
])
commit
=
user_project
.
commit
(
sha
)
not_found!
"Commit"
unless
commit
not_found!
"Commit"
unless
commit
commit
.
raw_diffs
.
to_a
commit
.
raw_diffs
.
to_a
end
end
# Get a commit's comments
desc
"Get a commit's comments"
do
#
success
Entities
::
CommitNote
# Parameters:
failure
[[
404
,
'Not Found'
]]
# id (required) - The ID of a project
end
# sha (required) - The commit hash
params
do
# Examples:
requires
:sha
,
type:
String
,
desc:
'A commit sha, or the name of a branch or tag'
# GET /projects/:id/repository/commits/:sha/comments
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
get
':id/repository/commits/:sha/comments'
do
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
params
[
:sha
])
commit
=
user_project
.
commit
(
sha
)
not_found!
'Commit'
unless
commit
not_found!
'Commit'
unless
commit
notes
=
Note
.
where
(
commit_id:
commit
.
id
).
order
(
:created_at
)
notes
=
Note
.
where
(
commit_id:
commit
.
id
).
order
(
:created_at
)
present
paginate
(
notes
),
with:
Entities
::
CommitNote
present
paginate
(
notes
),
with:
Entities
::
CommitNote
end
end
# Post comment to commit
desc
'Post comment to commit'
do
#
success
Entities
::
CommitNote
# Parameters:
end
# id (required) - The ID of a project
params
do
# sha (required) - The commit hash
requires
:sha
,
type:
String
,
regexp:
/\A\h{6,40}\z/
,
desc:
"The commit's SHA"
# note (required) - Text of comment
requires
:note
,
type:
String
,
desc:
'The text of the comment'
# path (optional) - The file path
optional
:path
,
type:
String
,
desc:
'The file path'
# line (optional) - The line number
given
:path
do
# line_type (optional) - The type of line (new or old)
requires
:line
,
type:
Integer
,
desc:
'The line number'
# Examples:
requires
:line_type
,
type:
String
,
values:
[
'new'
,
'old'
],
default:
'new'
,
desc:
'The type of the line'
# POST /projects/:id/repository/commits/:sha/comments
end
end
post
':id/repository/commits/:sha/comments'
do
post
':id/repository/commits/:sha/comments'
do
required_attributes!
[
:note
]
commit
=
user_project
.
commit
(
params
[
:sha
])
sha
=
params
[
:sha
]
commit
=
user_project
.
commit
(
sha
)
not_found!
'Commit'
unless
commit
not_found!
'Commit'
unless
commit
opts
=
{
opts
=
{
note:
params
[
:note
],
note:
params
[
:note
],
noteable_type:
'Commit'
,
noteable_type:
'Commit'
,
commit_id:
commit
.
id
commit_id:
commit
.
id
}
}
if
params
[
:path
]
&&
params
[
:line
]
&&
params
[
:line_type
]
if
params
[
:path
]
commit
.
raw_diffs
(
all_diffs:
true
).
each
do
|
diff
|
commit
.
raw_diffs
(
all_diffs:
true
).
each
do
|
diff
|
next
unless
diff
.
new_path
==
params
[
:path
]
next
unless
diff
.
new_path
==
params
[
:path
]
lines
=
Gitlab
::
Diff
::
Parser
.
new
.
parse
(
diff
.
diff
.
each_line
)
lines
=
Gitlab
::
Diff
::
Parser
.
new
.
parse
(
diff
.
diff
.
each_line
)
lines
.
each
do
|
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
)
break
opts
[
:line_code
]
=
Gitlab
::
Diff
::
LineCode
.
generate
(
diff
.
new_path
,
line
.
new_pos
,
line
.
old_pos
)
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