mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-09 04:36:11 +10:00
Merge branch 'repo-check-require-push-events' into 'master'
Do not check repos without push events Reduce false positives from automatic repository checks by skipping projects without push events. See merge request !4684
This commit is contained in:
committed by
Robert Speicher
parent
6fdf383e60
commit
989b094f42
@@ -15,7 +15,7 @@ module RepositoryCheck
|
||||
private
|
||||
|
||||
def check(project)
|
||||
if !git_fsck(project.repository)
|
||||
if has_pushes?(project) && !git_fsck(project.repository)
|
||||
false
|
||||
elsif project.wiki_enabled?
|
||||
# Historically some projects never had their wiki repos initialized;
|
||||
@@ -44,5 +44,9 @@ module RepositoryCheck
|
||||
false
|
||||
end
|
||||
end
|
||||
|
||||
def has_pushes?(project)
|
||||
Project.with_push.exists?(project.id)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,6 +4,26 @@ require 'fileutils'
|
||||
describe RepositoryCheck::SingleRepositoryWorker do
|
||||
subject { described_class.new }
|
||||
|
||||
it 'passes when the project has no push events' do
|
||||
project = create(:project_empty_repo, wiki_enabled: false)
|
||||
project.events.destroy_all
|
||||
break_repo(project)
|
||||
|
||||
subject.perform(project.id)
|
||||
|
||||
expect(project.reload.last_repository_check_failed).to eq(false)
|
||||
end
|
||||
|
||||
it 'fails when the project has push events and a broken repository' do
|
||||
project = create(:project_empty_repo)
|
||||
create_push_event(project)
|
||||
break_repo(project)
|
||||
|
||||
subject.perform(project.id)
|
||||
|
||||
expect(project.reload.last_repository_check_failed).to eq(true)
|
||||
end
|
||||
|
||||
it 'fails if the wiki repository is broken' do
|
||||
project = create(:project_empty_repo, wiki_enabled: true)
|
||||
project.create_wiki
|
||||
@@ -39,6 +59,7 @@ describe RepositoryCheck::SingleRepositoryWorker do
|
||||
|
||||
it 'does not create a wiki if the main repo does not exist at all' do
|
||||
project = create(:project_empty_repo)
|
||||
create_push_event(project)
|
||||
FileUtils.rm_rf(project.repository.path_to_repo)
|
||||
FileUtils.rm_rf(wiki_path(project))
|
||||
|
||||
@@ -54,4 +75,12 @@ describe RepositoryCheck::SingleRepositoryWorker do
|
||||
def wiki_path(project)
|
||||
project.wiki.repository.path_to_repo
|
||||
end
|
||||
|
||||
def create_push_event(project)
|
||||
project.events.create(action: Event::PUSHED, author_id: create(:user).id)
|
||||
end
|
||||
|
||||
def break_repo(project)
|
||||
FileUtils.rm_rf(File.join(project.repository.path_to_repo, 'objects'))
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user