Class: Gitlab::BitbucketServerImport::Importers::RepositoryImporter

Inherits:
Object
  • Object
show all
Includes:
Loggable
Defined in:
lib/gitlab/bitbucket_server_import/importers/repository_importer.rb

Instance Method Summary collapse

Methods included from Loggable

#log_debug, #log_error, #log_info, #log_warn

Constructor Details

#initialize(project) ⇒ RepositoryImporter

Returns a new instance of RepositoryImporter.



9
10
11
# File 'lib/gitlab/bitbucket_server_import/importers/repository_importer.rb', line 9

def initialize(project)
  @project = project
end

Instance Method Details

#executeObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/gitlab/bitbucket_server_import/importers/repository_importer.rb', line 13

def execute
  log_info(import_stage: 'import_repository', message: 'starting import')

  if project.empty_repo?
    project.repository.import_repository(project.import_url)
    project.repository.fetch_as_mirror(project.import_url, refmap: refmap)

    validate_repository_size!

    update_clone_time
  end

  log_info(import_stage: 'import_repository', message: 'finished import')

  true
rescue ::Gitlab::Git::CommandError => e
  Gitlab::ErrorTracking.log_exception(
    e, import_stage: 'import_repository', message: 'failed import', error: e.message
  )

  # Expire cache to prevent scenarios such as:
  # 1. First import failed, but the repo was imported successfully, so +exists?+ returns true
  # 2. Retried import, repo is broken or not imported but +exists?+ still returns true
  project.repository.expire_content_cache if project.repository_exists?

  raise
end