summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-04-05 08:17:47 +0000
committerYorick Peterse <yorickpeterse@gmail.com>2016-04-05 08:17:47 +0000
commit8a0a802ee960a21145995661c3751bbe8cde9e5c (patch)
tree2a9034e13f6fb71f983a07fe614e0c93777dc57c
parent6bf4e9e75232be83995a09f3a83e47fd0103273f (diff)
parentf2005fa56682a5dc3b57d610cb733a34b2e08520 (diff)
downloadgitlab-ce-8a0a802ee960a21145995661c3751bbe8cde9e5c.tar.gz
Merge branch 'fix-gh-pr-import' into 'master'
Fix Importing repos from GHE doesn't work See merge request !3529
-rw-r--r--app/models/repository.rb5
-rw-r--r--app/services/projects/import_service.rb2
-rw-r--r--spec/models/repository_spec.rb14
-rw-r--r--spec/services/projects/import_service_spec.rb17
4 files changed, 38 insertions, 0 deletions
diff --git a/app/models/repository.rb b/app/models/repository.rb
index e80c2238402..a8e826c9cbf 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -364,6 +364,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 2015897dd19..ef15ef6a473 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 c5d5a1c2492..f517f325c03 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 04f474c736c..32bf3acf483 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)