Skip to content
Snippets Groups Projects
Commit 822d9aa6 authored by Sean Edge's avatar Sean Edge
Browse files

Create RepoTag Grape entity and present it when doing stuff with tags via API....

Create RepoTag Grape entity and present it when doing stuff with tags via API. Update API doc for repositories. Add tag message to tag list page in UI. Update Changelog. Update spec to set .gitconfig identity, required for annotated tags.
parent f99b8768
No related branches found
No related tags found
1 merge request!7850Finish up work on annotated tags
Loading
Loading
@@ -4,6 +4,7 @@ v 7.5.0
- Fix LDAP authentication for Git HTTP access
- Fix LDAP config lookup for provider 'ldap'
- Add Atlassian Bamboo CI service (Drew Blessing)
- Tie up loose ends with annotated tags: API & UI (Sean Edge)
 
v 7.4.2
- Fix internal snippet exposing for unauthenticated users
Loading
Loading
Loading
Loading
@@ -4,6 +4,9 @@
= link_to project_commits_path(@project, tag.name), class: "" do
%i.fa.fa-tag
= tag.name
- if tag.message.present?
 
= tag.message
.pull-right
- if can? current_user, :download_code, @project
= render 'projects/repositories/download_archive', ref: tag.name, btn_class: 'btn-grouped btn-group-small'
Loading
Loading
Loading
Loading
@@ -56,6 +56,7 @@ Parameters:
[
{
"name": "v1.0.0",
"message": "Release 1.0.0",
"commit": {
"id": "2695effb5807a22ff3d138d593fd856244e155e7",
"parents": [],
Loading
Loading
@@ -67,10 +68,11 @@ Parameters:
"committed_date": "2012-05-28T04:42:42-07:00",
"committer_email": "jack@example.com"
},
"protected": false
}
]
```
The message will be `nil` when creating a lightweight tag otherwise
it will contain the annotation.
 
It returns 200 if the operation succeed. In case of an error,
405 with an explaining error message is returned.
Loading
Loading
Loading
Loading
@@ -73,6 +73,25 @@ module API
end
end
 
class RepoTag < Grape::Entity
expose :name
expose :message do |repo_obj, _options|
if repo_obj.respond_to?(:message)
repo_obj.message
else
nil
end
end
expose :commit do |repo_obj, options|
if repo_obj.respond_to?(:commit)
repo_obj.commit
elsif options[:project]
options[:project].repository.commit(repo_obj.target)
end
end
end
class RepoObject < Grape::Entity
expose :name
 
Loading
Loading
Loading
Loading
@@ -23,7 +23,8 @@ module API
# Example Request:
# GET /projects/:id/repository/tags
get ":id/repository/tags" do
present user_project.repo.tags.sort_by(&:name).reverse, with: Entities::RepoObject, project: user_project
present user_project.repo.tags.sort_by(&:name).reverse,
with: Entities::RepoTag, project: user_project
end
 
# Create tag
Loading
Loading
@@ -43,7 +44,7 @@ module API
 
if result[:status] == :success
present result[:tag],
with: Entities::RepoObject,
with: Entities::RepoTag,
project: user_project
else
render_api_error!(result[:message], 400)
Loading
Loading
Loading
Loading
@@ -34,21 +34,24 @@ describe API::API, api: true do
end
end
 
# TODO: fix this test for CI
#context 'annotated tag' do
#it 'should create a new annotated tag' do
#post api("/projects/#{project.id}/repository/tags", user),
#tag_name: 'v7.1.0',
#ref: 'master',
#message: 'tag message'
#response.status.should == 201
#json_response['name'].should == 'v7.1.0'
# The message is not part of the JSON response.
# Additional changes to the gitlab_git gem may be required.
# json_response['message'].should == 'tag message'
#end
#end
context 'annotated tag' do
it 'should create a new annotated tag' do
# Identity must be set in .gitconfig to create annotated tag.
repo_path = File.join(Gitlab.config.gitlab_shell.repos_path,
project.path_with_namespace + '.git')
system(*%W(git --git-dir=#{repo_path} config user.name #{user.name}))
system(*%W(git --git-dir=#{repo_path} config user.email #{user.email}))
post api("/projects/#{project.id}/repository/tags", user),
tag_name: 'v7.1.0',
ref: 'master',
message: 'Release 7.1.0'
response.status.should == 201
json_response['name'].should == 'v7.1.0'
json_response['message'].should == 'Release 7.1.0'
end
end
 
it 'should deny for user without push access' do
post api("/projects/#{project.id}/repository/tags", user2),
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment