summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-09-30 16:07:29 +0000
committerRémy Coutable <remy@rymai.me>2016-09-30 16:07:29 +0000
commit9a79c9e98079ab21428289af9ec5dd3f0583c375 (patch)
treeb456b8987a05747d9f1783e74bdfb43faacfae69 /app
parente5c7c644d4d73623cf2993df91f99bbaab489f18 (diff)
parent02db2dc5f34e51c507ebcda876184fca1b5a9c1e (diff)
downloadgitlab-ce-9a79c9e98079ab21428289af9ec5dd3f0583c375.tar.gz
Merge branch 'close-merge-request-if-open-without-source-project' into 'master'
Before rendering `show` template we close open merge request without source project. This way there is no need to render `invalid` template. I think that it's better solution than !6383 See merge request !6478
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects/merge_requests_controller.rb13
1 files changed, 8 insertions, 5 deletions
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 020a21ddf93..68bb4232f5b 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -18,6 +18,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
before_action :define_commit_vars, only: [:diffs]
before_action :define_diff_comment_vars, only: [:diffs]
before_action :ensure_ref_fetched, only: [:show, :diffs, :commits, :builds, :conflicts, :pipelines]
+ before_action :close_merge_request_without_source_project, only: [:show, :diffs, :commits, :builds, :pipelines]
# Allow read any merge_request
before_action :authorize_read_merge_request!
@@ -416,10 +417,6 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
def validates_merge_request
- # If source project was removed and merge request for some reason
- # wasn't close (Ex. mr from fork to origin)
- return invalid_mr if !@merge_request.source_project && @merge_request.open?
-
# Show git not found page
# if there is no saved commits between source & target branch
if @merge_request.commits.blank?
@@ -494,7 +491,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
def invalid_mr
- # Render special view for MR with removed source or target branch
+ # Render special view for MR with removed target branch
render 'invalid'
end
@@ -536,4 +533,10 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@diff_notes_disabled = !@merge_request_diff.latest?
@diffs = @merge_request_diff.diffs(diff_options)
end
+
+ def close_merge_request_without_source_project
+ if !@merge_request.source_project && @merge_request.open?
+ @merge_request.close
+ end
+ end
end