Expire related caches after changing HEAD

Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
Minqi Pan 2016-04-27 11:32:28 +08:00 committed by Rémy Coutable
parent f1bd9f05e2
commit d7cdcc51bd
No known key found for this signature in database
GPG Key ID: 46DF07E5CD9E96AB
5 changed files with 32 additions and 16 deletions

View File

@ -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

View File

@ -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

View File

@ -0,0 +1,4 @@
---
title: Expire related caches after changing HEAD
merge_request:
author: Minqi Pan

View File

@ -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)

View File

@ -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