summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Kumanyaev <me@zzet.org>2013-07-31 20:31:34 +0400
committerAndrew Kumanyaev <me@zzet.org>2013-07-31 20:31:34 +0400
commitfb8a3e319a59cedd19191a169cfae08b2923ecbe (patch)
tree37dc07967a842f8aa7e460a42fc29d39b40c5953
parentb19bffc536c85262e85f81237c544e18040742c6 (diff)
downloadgitlab-ce-fb8a3e319a59cedd19191a169cfae08b2923ecbe.tar.gz
Update logic for validates_merge_request for tree of MR
For case: Merge request №1: branch "feature" to "release" and remove "feature" branch Merge request №2: branch "release" to "master" and remove "release" branch Merge request №1 - broken :(
-rw-r--r--app/controllers/projects/merge_requests_controller.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 33c1a1feff7..d07fa8cb79a 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -122,12 +122,16 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
def validates_merge_request
- # Show git not found page if target branch doesn't exist
- return invalid_mr unless @project.repository.branch_names.include?(@merge_request.target_branch)
-
- # Show git not found page if source branch doesn't exist
- # and there is no saved commits between source & target branch
- return invalid_mr if !@project.repository.branch_names.include?(@merge_request.source_branch) && @merge_request.commits.blank?
+ # Show git not found page
+ # if there is no saved commits between source & target branch
+ if @merge_request.commits.blank?
+ # and
+ # if source target doesn't exist
+ return invalid_mr if !@project.repository.branch_names.include?(@merge_request.target_branch)
+
+ # or if source branch doesn't exist
+ return invalid_mr if !@project.repository.branch_names.include?(@merge_request.source_branch)
+ end
end
def define_show_vars