Expire related caches after changing HEAD
Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
parent
f1bd9f05e2
commit
d7cdcc51bd
5 changed files with 32 additions and 16 deletions
|
@ -1032,7 +1032,7 @@ class Project < ActiveRecord::Base
|
|||
"refs/heads/#{branch}",
|
||||
force: true)
|
||||
repository.copy_gitattributes(branch)
|
||||
repository.expire_avatar_cache
|
||||
repository.after_change_head
|
||||
reload_default_branch
|
||||
end
|
||||
|
||||
|
|
|
@ -439,6 +439,11 @@ class Repository
|
|||
expire_content_cache
|
||||
end
|
||||
|
||||
# Runs code after the HEAD of a repository is changed.
|
||||
def after_change_head
|
||||
expire_method_caches(METHOD_CACHES_FOR_FILE_TYPES.keys)
|
||||
end
|
||||
|
||||
# Runs code after a repository has been forked/imported.
|
||||
def after_import
|
||||
expire_content_cache
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Expire related caches after changing HEAD
|
||||
merge_request:
|
||||
author: Minqi Pan
|
|
@ -1545,11 +1545,13 @@ describe Project, models: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'change_head' do
|
||||
describe '#change_head' do
|
||||
let(:project) { create(:project) }
|
||||
|
||||
it 'calls the before_change_head method' do
|
||||
it 'calls the before_change_head and after_change_head methods' do
|
||||
expect(project.repository).to receive(:before_change_head)
|
||||
expect(project.repository).to receive(:after_change_head)
|
||||
|
||||
project.change_head(project.default_branch)
|
||||
end
|
||||
|
||||
|
@ -1565,11 +1567,6 @@ describe Project, models: true do
|
|||
project.change_head(project.default_branch)
|
||||
end
|
||||
|
||||
it 'expires the avatar cache' do
|
||||
expect(project.repository).to receive(:expire_avatar_cache)
|
||||
project.change_head(project.default_branch)
|
||||
end
|
||||
|
||||
it 'reloads the default branch' do
|
||||
expect(project).to receive(:reload_default_branch)
|
||||
project.change_head(project.default_branch)
|
||||
|
|
|
@ -1150,6 +1150,24 @@ describe Repository, models: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#after_change_head' do
|
||||
it 'flushes the readme cache' do
|
||||
expect(repository).to receive(:expire_method_caches).with([
|
||||
:readme,
|
||||
:changelog,
|
||||
:license,
|
||||
:contributing,
|
||||
:version,
|
||||
:gitignore,
|
||||
:koding,
|
||||
:gitlab_ci,
|
||||
:avatar
|
||||
])
|
||||
|
||||
repository.after_change_head
|
||||
end
|
||||
end
|
||||
|
||||
describe '#before_push_tag' do
|
||||
it 'flushes the cache' do
|
||||
expect(repository).to receive(:expire_statistics_caches)
|
||||
|
@ -1513,14 +1531,6 @@ describe Repository, models: true do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#expire_avatar_cache' do
|
||||
it 'expires the cache' do
|
||||
expect(repository).to receive(:expire_method_caches).with(%i(avatar))
|
||||
|
||||
repository.expire_avatar_cache
|
||||
end
|
||||
end
|
||||
|
||||
describe '#file_on_head' do
|
||||
context 'with a non-existing repository' do
|
||||
it 'returns nil' do
|
||||
|
|
Loading…
Reference in a new issue