Skip to content
Snippets Groups Projects
Commit 95c59b2e authored by Paco Guzman's avatar Paco Guzman
Browse files

Trying to reduce git calls

parent 98cede7e
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -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"
Loading
Loading
Loading
Loading
@@ -132,7 +132,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
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
Loading
Loading
@@ -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)
Loading
Loading
@@ -267,6 +267,7 @@ class Repository
 
def expire_branches_cache
cache.expire(:branch_names)
@branch_names = nil
@local_branches = nil
end
 
Loading
Loading
@@ -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.
Loading
Loading
@@ -430,20 +427,7 @@ class Repository
expire_branch_count_cache
expire_branches_cache
end
def method_missing(m, *args, &block)
if m == :lookup && !block_given?
lookup_cache[m] ||= {}
lookup_cache[m][args.join(":")] ||= raw_repository.send(m, *args, &block)
else
raw_repository.send(m, *args, &block)
end
end
def respond_to_missing?(method, include_private = false)
raw_repository.respond_to?(method, include_private) || super
end
def blob_at(sha, path)
unless Gitlab::Git.blank_ref?(sha)
Blob.decorate(Gitlab::Git::Blob.find(self, sha, path))
Loading
Loading
Loading
Loading
@@ -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
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment