Respective cache is now expired when creating a new branch
Project and branch cache is expired when project is still empty or new branch is created. develops tests accordingly Signed-off-by: Rémy Coutable <remy@rymai.me>
This commit is contained in:
parent
f4804d5bb4
commit
2c0f8eb1cc
|
@ -26,6 +26,7 @@ v 8.10.2 (unreleased)
|
|||
- Fix backup restore. !5459
|
||||
- Rescue Rugged::OSError (lock exists) when creating references. !5497
|
||||
- Disable MySQL foreign key checks before dropping all tables. !5472
|
||||
- Page is now properlty rendered after commiting the first file and creating the first branch
|
||||
- Fix a bug where forking a project from a repository storage to another would fail
|
||||
- Show release notes in tags list
|
||||
- Use project ID in repository cache to prevent stale data from persisting across projects. !5460
|
||||
|
|
|
@ -988,6 +988,10 @@ class Repository
|
|||
if was_empty || !target_branch
|
||||
# Create branch
|
||||
rugged.references.create(ref, newrev)
|
||||
|
||||
# If repo was empty expire cache
|
||||
after_create if was_empty
|
||||
after_create_branch
|
||||
else
|
||||
# Update head
|
||||
current_head = find_branch(branch).target
|
||||
|
|
|
@ -446,6 +446,43 @@ describe Repository, models: true do
|
|||
end.to raise_error(GitHooksService::PreReceiveError)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when target branch is different from source branch' do
|
||||
before do
|
||||
allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([true, ''])
|
||||
end
|
||||
|
||||
it 'expires branch cache' do
|
||||
expect(repository).not_to receive(:expire_exists_cache)
|
||||
expect(repository).not_to receive(:expire_root_ref_cache)
|
||||
expect(repository).not_to receive(:expire_emptiness_caches)
|
||||
expect(repository).to receive(:expire_branches_cache)
|
||||
expect(repository).to receive(:expire_has_visible_content_cache)
|
||||
expect(repository).to receive(:expire_branch_count_cache)
|
||||
|
||||
repository.commit_with_hooks(user, 'new-feature') { sample_commit.id }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when repository is empty' do
|
||||
before do
|
||||
allow_any_instance_of(Gitlab::Git::Hook).to receive(:trigger).and_return([true, ''])
|
||||
end
|
||||
|
||||
it 'expires creation and branch cache' do
|
||||
empty_repository = create(:empty_project, :empty_repo).repository
|
||||
|
||||
expect(empty_repository).to receive(:expire_exists_cache)
|
||||
expect(empty_repository).to receive(:expire_root_ref_cache)
|
||||
expect(empty_repository).to receive(:expire_emptiness_caches)
|
||||
expect(empty_repository).to receive(:expire_branches_cache)
|
||||
expect(empty_repository).to receive(:expire_has_visible_content_cache)
|
||||
expect(empty_repository).to receive(:expire_branch_count_cache)
|
||||
|
||||
empty_repository.commit_file(user, 'CHANGELOG', 'Changelog!',
|
||||
'Updates file content', 'master', false)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#exists?' do
|
||||
|
|
Loading…
Reference in New Issue