Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-12-12 13:34:42 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-12-12 13:34:42 +0400
commit6c3459978dff210af0066307f76800956cbec5a8 (patch)
tree4df344b4bfd877905c233d4f461f1cb65fc7e2f5 /app
parent5a4386a466425422fc20c255e8a310eff0380f6b (diff)
Add new methods to MR to check if source or target branch exists
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Diffstat (limited to 'app')
-rw-r--r--app/controllers/projects/merge_requests_controller.rb11
-rw-r--r--app/models/merge_request.rb30
2 files changed, 36 insertions, 5 deletions
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 2f285f8ba85..5608cda40ef 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -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
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index b164ea11073..904fd618b83 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -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)