Improve branch-removal logic
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
e089b11b7a
commit
0455391add
|
@ -4,8 +4,7 @@ class Projects::BranchesController < Projects::ApplicationController
|
|||
before_filter :require_non_empty_project
|
||||
|
||||
before_filter :authorize_code_access!
|
||||
before_filter :authorize_push!, only: [:create]
|
||||
before_filter :authorize_admin_project!, only: [:destroy]
|
||||
before_filter :authorize_push!, only: [:create, :destroy]
|
||||
|
||||
def index
|
||||
@branches = Kaminari.paginate_array(@repository.branches).page(params[:page]).per(30)
|
||||
|
@ -22,11 +21,7 @@ class Projects::BranchesController < Projects::ApplicationController
|
|||
end
|
||||
|
||||
def destroy
|
||||
branch = @repository.find_branch(params[:id])
|
||||
|
||||
if branch && @repository.rm_branch(branch.name)
|
||||
Event.create_ref_event(@project, current_user, branch, 'rm')
|
||||
end
|
||||
DeleteBranchService.new.execute(project, params[:id], current_user)
|
||||
|
||||
respond_to do |format|
|
||||
format.html { redirect_to project_branches_path(@project) }
|
||||
|
|
|
@ -8,6 +8,10 @@ class DeleteBranchService
|
|||
return error('No such branch')
|
||||
end
|
||||
|
||||
if branch_name == repository.root_ref
|
||||
return error('Cannot remove HEAD branch')
|
||||
end
|
||||
|
||||
# Dont allow remove of protected branch
|
||||
if project.protected_branch?(branch_name)
|
||||
return error('Protected branch cant be removed')
|
||||
|
|
|
@ -16,8 +16,8 @@
|
|||
%i.icon-copy
|
||||
Compare
|
||||
|
||||
- if can?(current_user, :admin_project, @project) && branch.name != @repository.root_ref
|
||||
= link_to project_branch_path(@project, branch.name), class: 'btn btn-grouped btn-small remove-row', method: :delete, data: { confirm: 'Removed branch cannot be restored. Are you sure?'}, remote: true do
|
||||
- if can_remove_branch?(@project, branch.name)
|
||||
= link_to project_branch_path(@project, branch.name), class: 'btn btn-grouped btn-small btn-remove remove-row', method: :delete, data: { confirm: 'Removed branch cannot be restored. Are you sure?'}, remote: true do
|
||||
%i.icon-trash
|
||||
|
||||
- if commit
|
||||
|
|
Loading…
Reference in New Issue