summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-02-08 12:50:55 +0100
committerYorick Peterse <yorickpeterse@gmail.com>2016-02-08 15:40:19 +0100
commit9a99d8e49dc07faaaa2fae436423e11dab5a7d7e (patch)
treede208a478614dfc317f444969480fa56013ee809 /app/services
parent7322c5a05bc018108123194e4e542bb04d42b2b2 (diff)
downloadgitlab-ce-caching-repository-git-operations.tar.gz
Cache various Repository Git operationscaching-repository-git-operations
This caches the output of the following methods: * Repository#empty? * Repository#has_visible_content? * Repository#root_ref The cache for Repository#has_visible_content? is flushed whenever a commit is pushed to a new branch or an existing branch is removed. The cache for Repository#root_ref is only flushed whenever a user changes the default branch of a project. The cache for Repository#empty? is never explicitly flushed as there's no need for it.
Diffstat (limited to 'app/services')
-rw-r--r--app/services/git_push_service.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb
index d7ea30bc315..0f31756797d 100644
--- a/app/services/git_push_service.rb
+++ b/app/services/git_push_service.rb
@@ -21,8 +21,12 @@ class GitPushService
project.repository.expire_cache
if push_remove_branch?(ref, newrev)
+ project.repository.expire_has_visible_content_cache
+
@push_commits = []
elsif push_to_new_branch?(ref, oldrev)
+ project.repository.expire_has_visible_content_cache
+
# Re-find the pushed commits.
if is_default_branch?(ref)
# Initial push to the default branch. Take the full history of that branch as "newly pushed".