Class: BulkImports::Projects::Pipelines::RepositoryPipeline

Inherits:
Object
  • Object
show all
Includes:
BulkImports::Pipeline
Defined in:
lib/bulk_imports/projects/pipelines/repository_pipeline.rb

Constant Summary

Constants included from BulkImports::Pipeline

BulkImports::Pipeline::CACHE_KEY_EXPIRATION, BulkImports::Pipeline::EMPTY_EXPORT_STATUS_TIMEOUT, BulkImports::Pipeline::ExpiredError, BulkImports::Pipeline::FailedError, BulkImports::Pipeline::NDJSON_EXPORT_TIMEOUT, BulkImports::Pipeline::NotAllowedError

Constants included from BulkImports::Pipeline::Runner

BulkImports::Pipeline::Runner::MarkedAsFailedError

Instance Method Summary collapse

Methods included from BulkImports::Pipeline

#current_user, #import_export_config, #initialize, #portable, #tracker

Methods included from BulkImports::Pipeline::Runner

#on_finish, #run

Instance Method Details

#after_run(_) ⇒ Object

The initial fetch can bring in lots of loose refs and objects. Running a ‘git gc` will make importing merge requests faster.



39
40
41
# File 'lib/bulk_imports/projects/pipelines/repository_pipeline.rb', line 39

def after_run(_)
  ::Repositories::HousekeepingService.new(context.portable, :gc).execute
end

#load(context, data) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/bulk_imports/projects/pipelines/repository_pipeline.rb', line 17

def load(context, data)
  url = data['httpUrlToRepo']
  return unless url.present?

  url = url.sub("://", "://oauth2:#{context.configuration.access_token}@")
  project = context.portable

  Gitlab::HTTP_V2::UrlBlocker.validate!(
    url,
    schemes: %w[http https],
    allow_local_network: allow_local_requests?,
    allow_localhost: allow_local_requests?,
    deny_all_requests_except_allowed: Gitlab::CurrentSettings.deny_all_requests_except_allowed?,
    outbound_local_requests_allowlist: Gitlab::CurrentSettings.outbound_local_requests_whitelist # rubocop:disable Naming/InclusiveLanguage -- existing setting
  )

  project.ensure_repository
  project.repository.fetch_as_mirror(url)
end

#transform(_, data) ⇒ Object



13
14
15
# File 'lib/bulk_imports/projects/pipelines/repository_pipeline.rb', line 13

def transform(_, data)
  data.slice('httpUrlToRepo')
end