Unify check branch name exist

This commit is contained in:
Paco Guzman 2016-06-20 15:38:54 +02:00
parent 74f8f26098
commit 208b18c956
6 changed files with 7 additions and 11 deletions

View file

@ -74,7 +74,7 @@ class Projects::ApplicationController < ApplicationController
end
def require_branch_head
unless @repository.branch_names.include?(@ref)
unless @repository.branch_exists?(@ref)
redirect_to(
namespace_project_tree_path(@project.namespace, @project, @ref),
notice: "This action is not allowed unless you are on a branch"

View file

@ -116,7 +116,7 @@ module ApplicationHelper
return false if project.merge_requests.where(source_branch: event.branch_name).opened.any?
# Skip if user removed branch right after that
return false unless project.repository.branch_names.include?(event.branch_name)
return false unless project.repository.branch_exists?(event.branch_name)
true
end

View file

@ -10,7 +10,7 @@ module BranchesHelper
end
def can_push_branch?(project, branch_name)
return false unless project.repository.branch_names.include?(branch_name)
return false unless project.repository.branch_exists?(branch_name)
::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(branch_name)
end

View file

@ -192,7 +192,7 @@ class Repository
end
def branch_names
cache.fetch(:branch_names) { branches.map(&:name) }
@branch_names ||= cache.fetch(:branch_names) { branches.map(&:name) }
end
def branch_exists?(branch_name)
@ -267,6 +267,7 @@ class Repository
def expire_branches_cache
cache.expire(:branch_names)
@branch_names = nil
@local_branches = nil
end
@ -332,10 +333,6 @@ class Repository
@lookup_cache ||= {}
end
def expire_branch_names
cache.expire(:branch_names)
end
def expire_avatar_cache(branch_name = nil, revision = nil)
# Avatars are pulled from the default branch, thus if somebody pushes to a
# different branch there's no need to expire anything.

View file

@ -487,9 +487,8 @@ class User < ActiveRecord::Base
events.recent.find do |event|
project = Project.find_by_id(event.project_id)
next unless project
repo = project.repository
if repo.branch_names.include?(event.branch_name)
if project.repository.branch_exists?(event.branch_name)
merge_requests = MergeRequest.where("created_at >= ?", event.created_at).
where(source_project_id: project.id,
source_branch: event.branch_name)

View file

@ -9,7 +9,7 @@ describe MergeWorker do
before do
source_project.team << [author, :master]
source_project.repository.expire_branch_names
source_project.repository.expire_branches_cache
end
it 'clears cache of source repo after removing source branch' do