Skip to content
Snippets Groups Projects
Verified Commit cb599a09 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Allow close of broken MR

parent 432018f8
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -79,6 +79,21 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
 
def update
# If we close MergeRequest we want to ignore validation
# so we can close broken one (Ex. fork project removed)
if params[:merge_request] == {"state_event"=>"close"}
@merge_request.allow_broken = true
if @merge_request.close
opts = { notice: 'Merge request was successfully closed.' }
else
opts = { alert: 'Failed to close merge request.' }
end
redirect_to [@merge_request.target_project, @merge_request], opts
return
end
if @merge_request.update_attributes(params[:merge_request].merge(author_id_of_changes: current_user.id))
@merge_request.reload_code
@merge_request.mark_as_unchecked
Loading
Loading
Loading
Loading
@@ -35,6 +35,10 @@ class MergeRequest < ActiveRecord::Base
 
attr_accessor :should_remove_source_branch
 
# When this attribute is true some MR validation is ignored
# It allows us to close or modify broken merge requests
attr_accessor :allow_broken
state_machine :state, initial: :opened do
event :close do
transition [:reopened, :opened] => :closed
Loading
Loading
@@ -80,7 +84,7 @@ class MergeRequest < ActiveRecord::Base
serialize :st_commits
serialize :st_diffs
 
validates :source_project, presence: true
validates :source_project, presence: true, unless: :allow_broken
validates :source_branch, presence: true
validates :target_project, presence: true
validates :target_branch, presence: true
Loading
Loading
Loading
Loading
@@ -24,7 +24,7 @@
%li= link_to "Email Patches", project_merge_request_path(@project, @merge_request, format: :patch)
%li= link_to "Plain Diff", project_merge_request_path(@project, @merge_request, format: :diff)
 
= link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: {state_event: :close }), method: :put, class: "btn grouped btn-close", title: "Close merge request"
= link_to 'Close', project_merge_request_path(@project, @merge_request, merge_request: { state_event: :close }), method: :put, class: "btn grouped btn-close", title: "Close merge request"
 
= link_to edit_project_merge_request_path(@project, @merge_request), class: "btn grouped", id:"edit_merge_request" do
%i.icon-edit
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