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

Add new methods to MR to check if source or target branch exists

parent 5a4386a4
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -160,14 +160,17 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
 
def validates_merge_request
# If source project was removed (Ex. mr from fork to origin)
return invalid_mr unless @merge_request.source_project
# 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 unless @merge_request.target_project.repository.branch_names.include?(@merge_request.target_branch)
# and if target branch doesn't exist
return invalid_mr unless @merge_request.target_branch_exists?
 
# or if source branch doesn't exist
return invalid_mr unless @merge_request.source_project.repository.branch_names.include?(@merge_request.source_branch)
# or if source branch doesn't exist
return invalid_mr unless @merge_request.source_branch_exists?
end
end
 
Loading
Loading
Loading
Loading
@@ -262,7 +262,7 @@ class MergeRequest < ActiveRecord::Base
# Return the set of issues that will be closed if this merge request is accepted.
def closes_issues
if target_branch == project.default_branch
unmerged_commits.map { |c| c.closes_issues(project) }.flatten.uniq.sort_by(&:id)
commits.map { |c| c.closes_issues(project) }.flatten.uniq.sort_by(&:id)
else
[]
end
Loading
Loading
@@ -273,6 +273,34 @@ class MergeRequest < ActiveRecord::Base
"merge request !#{iid}"
end
 
def target_project_path
if target_project
target_project.path_with_namespace
else
"(removed)"
end
end
def source_project_path
if source_project
source_project.path_with_namespace
else
"(removed)"
end
end
def source_branch_exists?
return false unless self.source_project
self.source_project.repository.branch_names.include?(self.source_branch)
end
def target_branch_exists?
return false unless self.target_project
self.target_project.repository.branch_names.include?(self.target_branch)
end
private
 
def dump_commits(commits)
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