From d55df634550e03b2aed5bbd4d7fc9d97000b75da Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Tue, 5 Apr 2016 08:17:47 +0000 Subject: [PATCH] Merge branch 'fix-gh-pr-import' into 'master' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix Importing repos from GHE doesn't work See merge request !3529 Signed-off-by: Rémy Coutable --- CHANGELOG | 3 +++ app/models/repository.rb | 5 +++++ app/services/projects/import_service.rb | 2 ++ spec/models/repository_spec.rb | 14 ++++++++++++++ spec/services/projects/import_service_spec.rb | 17 +++++++++++++++++ 5 files changed, 41 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 97ba13fa64..7b90122e1f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -16,6 +16,9 @@ v 8.7.0 (unreleased) - Fall back to `In-Reply-To` and `References` headers when sub-addressing is not available (David Padilla) - Remove "Congratulations!" tweet button on newly-created project. (Connor Shea) +v 8.6.5 + - Fix importing from GitHub Enterprise. !3529 + v 8.6.4 - Don't attempt to fetch any tags from a forked repo (Stan Hu) diff --git a/app/models/repository.rb b/app/models/repository.rb index ba526b7d78..1e4223cee9 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -362,6 +362,11 @@ class Repository expire_tag_count_cache end + def before_import + expire_emptiness_caches + expire_exists_cache + end + # Runs code after a repository has been forked/imported. def after_import expire_emptiness_caches diff --git a/app/services/projects/import_service.rb b/app/services/projects/import_service.rb index 2015897dd1..ef15ef6a47 100644 --- a/app/services/projects/import_service.rb +++ b/app/services/projects/import_service.rb @@ -46,6 +46,8 @@ module Projects def import_data return unless has_importer? + project.repository.before_import + unless importer.execute raise Error, 'The remote data could not be imported.' end diff --git a/spec/models/repository_spec.rb b/spec/models/repository_spec.rb index 417f11acca..22ef281f20 100644 --- a/spec/models/repository_spec.rb +++ b/spec/models/repository_spec.rb @@ -612,6 +612,20 @@ describe Repository, models: true do end end + describe '#before_import' do + it 'flushes the emptiness cachess' do + expect(repository).to receive(:expire_emptiness_caches) + + repository.before_import + end + + it 'flushes the exists cache' do + expect(repository).to receive(:expire_exists_cache) + + repository.before_import + end + end + describe '#after_import' do it 'flushes the emptiness cachess' do expect(repository).to receive(:expire_emptiness_caches) diff --git a/spec/services/projects/import_service_spec.rb b/spec/services/projects/import_service_spec.rb index 04f474c736..32bf3acf48 100644 --- a/spec/services/projects/import_service_spec.rb +++ b/spec/services/projects/import_service_spec.rb @@ -72,6 +72,23 @@ describe Projects::ImportService, services: true do expect(result[:status]).to eq :success end + it 'flushes various caches' do + expect_any_instance_of(Gitlab::Shell).to receive(:import_repository). + with(project.path_with_namespace, project.import_url). + and_return(true) + + expect_any_instance_of(Gitlab::GithubImport::Importer).to receive(:execute). + and_return(true) + + expect_any_instance_of(Repository).to receive(:expire_emptiness_caches). + and_call_original + + expect_any_instance_of(Repository).to receive(:expire_exists_cache). + and_call_original + + subject.execute + end + it 'fails if importer fails' do expect_any_instance_of(Gitlab::Shell).to receive(:import_repository).with(project.path_with_namespace, project.import_url).and_return(true) expect_any_instance_of(Gitlab::GithubImport::Importer).to receive(:execute).and_return(false)