summaryrefslogtreecommitdiff
path: root/app/controllers/projects
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-12-12 12:20:54 +0200
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-12-12 12:20:54 +0200
commitcb599a09be48ff7bcf73bbd4ea785c337c45b407 (patch)
tree75111d90afc14e97a86fe4d81c9c8da605871fb7 /app/controllers/projects
parent432018f84beb96a8f6eb791af59e175263ea01aa (diff)
downloadgitlab-ce-cb599a09be48ff7bcf73bbd4ea785c337c45b407.tar.gz
Allow close of broken MR
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app/controllers/projects')
-rw-r--r--app/controllers/projects/merge_requests_controller.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 5608cda40ef..7d7c1104ec9 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -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