Add new methods to MR to check if source or target branch exists
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
5a4386a466
commit
6c3459978d
2 changed files with 36 additions and 5 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
@ -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…
Reference in a new issue