Stop using branch_names.include? and use branch_exists?

This commit is contained in:
Andrew Newdigate
2017-10-10 14:56:04 +00:00
committed by Rémy Coutable
parent 900dd7fa93
commit 47d19c2de1
9 changed files with 15 additions and 10 deletions

View File

@ -4,8 +4,8 @@ module CompareHelper
to.present? &&
from != to &&
can?(current_user, :create_merge_request, project) &&
project.repository.branch_names.include?(from) &&
project.repository.branch_names.include?(to)
project.repository.branch_exists?(from) &&
project.repository.branch_exists?(to)
end
def create_mr_path(from = params[:from], to = params[:to], project = @project)

View File

@ -675,13 +675,13 @@ class MergeRequest < ActiveRecord::Base
def source_branch_exists?
return false unless self.source_project
self.source_project.repository.branch_names.include?(self.source_branch)
self.source_project.repository.branch_exists?(self.source_branch)
end
def target_branch_exists?
return false unless self.target_project
self.target_project.repository.branch_names.include?(self.target_branch)
self.target_project.repository.branch_exists?(self.target_branch)
end
def merge_commit_message(include_description: false)

View File

@ -458,7 +458,7 @@ module QuickActions
target_branch_param.strip
end
command :target_branch do |branch_name|
@updates[:target_branch] = branch_name if project.repository.branch_names.include?(branch_name)
@updates[:target_branch] = branch_name if project.repository.branch_exists?(branch_name)
end
desc 'Move issue from one column of the board to another'

View File

@ -0,0 +1,5 @@
---
title: Avoid fetching all branches for branch existence checks
merge_request: 14778
author:
type: changed

View File

@ -62,7 +62,7 @@ describe Projects::BranchesController do
let(:branch) { "feature%2Ftest" }
let(:ref) { "<script>alert('ref');</script>" }
it { is_expected.to render_template('new') }
it { project.repository.branch_names.include?('feature/test') }
it { project.repository.branch_exists?('feature/test') }
end
end

View File

@ -118,7 +118,7 @@ feature 'issuable templates', :js do
context 'user creates a merge request from a forked project using templates' do
let(:template_content) { 'this is a test "feature-proposal" template' }
let(:fork_user) { create(:user) }
let(:forked_project) { fork_project(project, fork_user) }
let(:forked_project) { fork_project(project, fork_user, repository: true) }
let(:merge_request) { create(:merge_request, :with_diffs, source_project: forked_project, target_project: project) }
background do

View File

@ -6,7 +6,7 @@ describe 'User views an open merge request' do
end
context 'when a merge request does not have repository' do
let(:project) { create(:project, :public) }
let(:project) { create(:project, :public, :repository) }
before do
visit(merge_request_path(merge_request))

View File

@ -3,7 +3,7 @@ require 'spec_helper'
feature 'Task Lists' do
include Warden::Test::Helpers
let(:project) { create(:project) }
let(:project) { create(:project, :repository) }
let(:user) { create(:user) }
let(:user2) { create(:user) }

View File

@ -1,7 +1,7 @@
require 'spec_helper'
describe MergeRequestEntity do
let(:project) { create :project }
let(:project) { create :project, :repository }
let(:resource) { create(:merge_request, source_project: project, target_project: project) }
let(:user) { create(:user) }