Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bulk_imports/projects')
-rw-r--r--lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline.rb15
-rw-r--r--lib/bulk_imports/projects/pipelines/merge_requests_pipeline.rb19
-rw-r--r--lib/bulk_imports/projects/pipelines/protected_branches_pipeline.rb15
-rw-r--r--lib/bulk_imports/projects/pipelines/repository_pipeline.rb10
-rw-r--r--lib/bulk_imports/projects/stage.rb26
5 files changed, 83 insertions, 2 deletions
diff --git a/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline.rb b/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline.rb
new file mode 100644
index 00000000000..1f720596c8f
--- /dev/null
+++ b/lib/bulk_imports/projects/pipelines/external_pull_requests_pipeline.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module BulkImports
+ module Projects
+ module Pipelines
+ class ExternalPullRequestsPipeline
+ include NdjsonPipeline
+
+ relation_name 'external_pull_requests'
+
+ extractor ::BulkImports::Common::Extractors::NdjsonExtractor, relation: relation
+ end
+ end
+ end
+end
diff --git a/lib/bulk_imports/projects/pipelines/merge_requests_pipeline.rb b/lib/bulk_imports/projects/pipelines/merge_requests_pipeline.rb
new file mode 100644
index 00000000000..264bda6e654
--- /dev/null
+++ b/lib/bulk_imports/projects/pipelines/merge_requests_pipeline.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module BulkImports
+ module Projects
+ module Pipelines
+ class MergeRequestsPipeline
+ include NdjsonPipeline
+
+ relation_name 'merge_requests'
+
+ extractor ::BulkImports::Common::Extractors::NdjsonExtractor, relation: relation
+
+ def after_run(_)
+ context.portable.merge_requests.set_latest_merge_request_diff_ids!
+ end
+ end
+ end
+ end
+end
diff --git a/lib/bulk_imports/projects/pipelines/protected_branches_pipeline.rb b/lib/bulk_imports/projects/pipelines/protected_branches_pipeline.rb
new file mode 100644
index 00000000000..a570143227d
--- /dev/null
+++ b/lib/bulk_imports/projects/pipelines/protected_branches_pipeline.rb
@@ -0,0 +1,15 @@
+# frozen_string_literal: true
+
+module BulkImports
+ module Projects
+ module Pipelines
+ class ProtectedBranchesPipeline
+ include NdjsonPipeline
+
+ relation_name 'protected_branches'
+
+ extractor ::BulkImports::Common::Extractors::NdjsonExtractor, relation: relation
+ end
+ end
+ end
+end
diff --git a/lib/bulk_imports/projects/pipelines/repository_pipeline.rb b/lib/bulk_imports/projects/pipelines/repository_pipeline.rb
index 86e696f87a4..6bbd4d0688b 100644
--- a/lib/bulk_imports/projects/pipelines/repository_pipeline.rb
+++ b/lib/bulk_imports/projects/pipelines/repository_pipeline.rb
@@ -17,10 +17,18 @@ module BulkImports
def load(context, data)
url = data['httpUrlToRepo']
url = url.sub("://", "://oauth2:#{context.configuration.access_token}@")
+ project = context.portable
Gitlab::UrlBlocker.validate!(url, allow_local_network: allow_local_requests?, allow_localhost: allow_local_requests?)
- context.portable.repository.import_repository(url)
+ project.ensure_repository
+ project.repository.fetch_as_mirror(url)
+ end
+
+ # The initial fetch can bring in lots of loose refs and objects.
+ # Running a `git gc` will make importing merge requests faster.
+ def after_run(_)
+ ::Repositories::HousekeepingService.new(context.portable, :gc).execute
end
private
diff --git a/lib/bulk_imports/projects/stage.rb b/lib/bulk_imports/projects/stage.rb
index 3ada0f406ca..9ccc9efff1d 100644
--- a/lib/bulk_imports/projects/stage.rb
+++ b/lib/bulk_imports/projects/stage.rb
@@ -19,6 +19,10 @@ module BulkImports
pipeline: BulkImports::Common::Pipelines::LabelsPipeline,
stage: 2
},
+ milestones: {
+ pipeline: BulkImports::Common::Pipelines::MilestonesPipeline,
+ stage: 2
+ },
issues: {
pipeline: BulkImports::Projects::Pipelines::IssuesPipeline,
stage: 3
@@ -27,9 +31,29 @@ module BulkImports
pipeline: BulkImports::Common::Pipelines::BoardsPipeline,
stage: 4
},
+ merge_requests: {
+ pipeline: BulkImports::Projects::Pipelines::MergeRequestsPipeline,
+ stage: 4
+ },
+ external_pull_requests: {
+ pipeline: BulkImports::Projects::Pipelines::ExternalPullRequestsPipeline,
+ stage: 4
+ },
+ protected_branches: {
+ pipeline: BulkImports::Projects::Pipelines::ProtectedBranchesPipeline,
+ stage: 4
+ },
+ wiki: {
+ pipeline: BulkImports::Common::Pipelines::WikiPipeline,
+ stage: 5
+ },
+ uploads: {
+ pipeline: BulkImports::Common::Pipelines::UploadsPipeline,
+ stage: 5
+ },
finisher: {
pipeline: BulkImports::Common::Pipelines::EntityFinisher,
- stage: 5
+ stage: 6
}
}
end