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:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-12 19:21:47 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-12 19:21:47 +0400
commit7ecebdd02df9b11fa6ba4f8033dcfe097935ed66 (patch)
treea080ef380992f880b7b29714772152dc3ac71ed5 /app/workers
parente2f946fddb7caf9757b33ba3dc7de8634f4ee825 (diff)
Repository import during project creation often return timeout for medium and large repos.
So lets do it async. First create project, then import repo and create satellite with Sidekiq
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/repository_import_worker.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/app/workers/repository_import_worker.rb b/app/workers/repository_import_worker.rb
new file mode 100644
index 00000000000..a3b4bd0c9b5
--- /dev/null
+++ b/app/workers/repository_import_worker.rb
@@ -0,0 +1,22 @@
+class RepositoryImportWorker
+ include Sidekiq::Worker
+ include Gitlab::ShellAdapter
+
+ sidekiq_options queue: :gitlab_shell
+
+ def perform(project_id)
+ project = Project.find(project_id)
+ result = gitlab_shell.send(:import_repository,
+ project.path_with_namespace,
+ project.import_url)
+
+ if result
+ project.imported = true
+ project.save
+ project.satellite.create unless project.satellite.exists?
+ project.discover_default_branch
+ else
+ project.imported = false
+ end
+ end
+end