Commit 12b779e7 authored by Douwe Maan's avatar Douwe Maan

Move tag deletion to service and execute hooks and services.

parent 10421674
...@@ -24,14 +24,13 @@ class Projects::TagsController < Projects::ApplicationController ...@@ -24,14 +24,13 @@ class Projects::TagsController < Projects::ApplicationController
end end
def destroy def destroy
tag = @repository.find_tag(params[:id]) DeleteTagService.new(project, current_user).execute(params[:id])
if tag && @repository.rm_tag(tag.name)
EventCreateService.new.push_ref(@project, current_user, tag, 'rm', Gitlab::Git::TAG_REF_PREFIX)
end
respond_to do |format| respond_to do |format|
format.html { redirect_to namespace_project_tags_path } format.html do
redirect_to namespace_project_tags_path(@project.namespace,
@project)
end
format.js format.js
end end
end end
......
require_relative 'base_service'
class DeleteTagService < BaseService
def execute(tag_name)
repository = project.repository
tag = repository.find_tag(tag_name)
# No such tag
unless tag
return error('No such tag', 404)
end
if repository.rm_tag(tag_name)
push_data = build_push_data(tag)
EventCreateService.new.push(project, current_user, push_data)
project.execute_hooks(push_data.dup, :tag_push_hooks)
project.execute_services(push_data.dup, :tag_push_hooks)
success('Tag was removed')
else
error('Failed to remove tag')
end
end
def error(message, return_code = 400)
out = super(message)
out[:return_code] = return_code
out
end
def success(message)
out = super()
out[:message] = message
out
end
def build_push_data(tag)
Gitlab::PushDataBuilder
.build(project, current_user, tag.target, Gitlab::Git::BLANK_SHA, "#{Gitlab::Git::TAG_REF_PREFIX}#{tag.name}", [])
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment