Use existing methods for branch names: Ex use @repository.branch_names instead of @repository.heads.map(&:name)

master
Dmitriy Zaporozhets 2013-03-31 17:08:10 +03:00
parent 025e41576e
commit 71b0f8ea0b
5 changed files with 32 additions and 13 deletions

View File

@ -129,11 +129,11 @@ class MergeRequestsController < ProjectResourceController
def validates_merge_request def validates_merge_request
# Show git not found page if target branch doesn't exist # Show git not found page if target branch doesn't exist
return invalid_mr unless @project.repo.heads.map(&:name).include?(@merge_request.target_branch) return invalid_mr unless @project.repository.branch_names.include?(@merge_request.target_branch)
# Show git not found page if source branch doesn't exist # Show git not found page if source branch doesn't exist
# and there is no saved commits between source & target branch # and there is no saved commits between source & target branch
return invalid_mr if !@project.repo.heads.map(&:name).include?(@merge_request.source_branch) && @merge_request.commits.blank? return invalid_mr if !@project.repository.branch_names.include?(@merge_request.source_branch) && @merge_request.commits.blank?
end end
def define_show_vars def define_show_vars

View File

@ -369,12 +369,19 @@ class Project < ActiveRecord::Base
end end
def open_branches def open_branches
if protected_branches.empty? all_branches = repository.branches
self.repo.heads
else if protected_branches.present?
pnames = protected_branches.map(&:name) all_branches.reject! do |branch|
self.repo.heads.reject { |h| pnames.include?(h.name) } protected_branches_names.include?(branch.name)
end.sort_by(&:name) end
end
all_branches
end
def protected_branches_names
@protected_branches_names ||= protected_branches.map(&:name)
end end
def root_ref?(branch) def root_ref?(branch)
@ -396,6 +403,6 @@ class Project < ActiveRecord::Base
# Check if current branch name is marked as protected in the system # Check if current branch name is marked as protected in the system
def protected_branch? branch_name def protected_branch? branch_name
protected_branches.map(&:name).include?(branch_name) protected_branches_names.include?(branch_name)
end end
end end

View File

@ -63,8 +63,9 @@ class Repository
end end
# Returns an Array of branch names # Returns an Array of branch names
# sorted by name ASC
def branch_names def branch_names
repo.branches.collect(&:name).sort branches.map(&:name)
end end
# Returns an Array of Branches # Returns an Array of Branches

View File

@ -13,7 +13,7 @@
.mr_branch_box .mr_branch_box
%h5.cgray From (Head Branch) %h5.cgray From (Head Branch)
.body .body
.padded= f.select(:source_branch, @repository.heads.map(&:name), { include_blank: "Select branch" }, {class: 'chosen span4'}) .padded= f.select(:source_branch, @repository.branch_names, { include_blank: "Select branch" }, {class: 'chosen span4'})
.mr_source_commit .mr_source_commit
.span2 .span2
@ -22,7 +22,7 @@
.mr_branch_box .mr_branch_box
%h5.cgray To (Base Branch) %h5.cgray To (Base Branch)
.body .body
.padded= f.select(:target_branch, @repository.heads.map(&:name), { include_blank: "Select branch" }, {class: 'chosen span4'}) .padded= f.select(:target_branch, @repository.branch_names, { include_blank: "Select branch" }, {class: 'chosen span4'})
.mr_target_commit .mr_target_commit
%fieldset %fieldset

View File

@ -233,7 +233,7 @@ describe Project do
it "should be true for projects with external issues tracker if issues enabled" do it "should be true for projects with external issues tracker if issues enabled" do
ext_project.can_have_issues_tracker_id?.should be_true ext_project.can_have_issues_tracker_id?.should be_true
end end
it "should be false for projects with internal issue tracker if issues enabled" do it "should be false for projects with internal issue tracker if issues enabled" do
project.can_have_issues_tracker_id?.should be_false project.can_have_issues_tracker_id?.should be_false
@ -247,4 +247,15 @@ describe Project do
ext_project.can_have_issues_tracker_id?.should be_false ext_project.can_have_issues_tracker_id?.should be_false
end end
end end
describe :open_branches do
let(:project) { create(:project) }
before do
project.protected_branches.create(name: 'master')
end
it { project.open_branches.map(&:name).should include('bootstrap') }
it { project.open_branches.map(&:name).should_not include('master') }
end
end end