mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-11 21:56:19 +10:00
more refactoring, now using custom job for processing project imports
This commit is contained in:
@@ -26,7 +26,7 @@ class Import::GitlabProjectsController < Import::BaseController
|
||||
end
|
||||
|
||||
def create
|
||||
@file = params[:file]
|
||||
file = params[:file]
|
||||
# @project_name =
|
||||
|
||||
repo_owner = current_user.username
|
||||
@@ -34,7 +34,7 @@ class Import::GitlabProjectsController < Import::BaseController
|
||||
|
||||
namespace = get_or_create_namespace || (render and return)
|
||||
|
||||
@project = Gitlab::ImportExport::ImportService.execute(archive_file: file, owner: repo_owner)
|
||||
@project = Project.create_from_import_job(current_user.id, File.expand_path(file.path))
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -359,6 +359,16 @@ class Project < ActiveRecord::Base
|
||||
def visible_to_user(user)
|
||||
where(id: user.authorized_projects.select(:id).reorder(nil))
|
||||
end
|
||||
|
||||
def create_from_import_job(current_user_id:, tmp_file:)
|
||||
job_id = ProjectImportWorker.perform_async(current_user_id, tmp_file)
|
||||
|
||||
if job_id
|
||||
Rails.logger.info "Import job started for #{path_with_namespace} with job ID #{job_id}"
|
||||
else
|
||||
Rails.logger.error "Import job failed to start for #{path_with_namespace}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def team
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
Import projects from FogBugz
|
||||
%hr
|
||||
|
||||
= form_tag status_import_gitlab_project_url, class: 'form-horizontal' do
|
||||
= form_tag import_gitlab_project_path, class: 'form-horizontal' do
|
||||
%p
|
||||
To get started you add your project export file below.
|
||||
.form-group
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
class ProjectImportWorker
|
||||
include Sidekiq::Worker
|
||||
include Gitlab::ShellAdapter
|
||||
|
||||
sidekiq_options queue: :gitlab_shell
|
||||
|
||||
def perform(current_user_id, tmp_file)
|
||||
current_user = User.find(current_user_id)
|
||||
|
||||
project = Gitlab::ImportExport::ImportService.execute(archive_file: tmp_file, owner: current_user)
|
||||
|
||||
# TODO: Move this to import service
|
||||
# if result[:status] == :error
|
||||
# project.update(import_error: result[:message])
|
||||
# project.import_fail
|
||||
# return
|
||||
# end
|
||||
|
||||
project.repository.after_import
|
||||
project.import_finish
|
||||
end
|
||||
end
|
||||
@@ -159,6 +159,7 @@ Rails.application.routes.draw do
|
||||
|
||||
resource :gitlab_project, only: [:create, :new], controller: :gitlab_projects do
|
||||
get :status
|
||||
post :create
|
||||
get :jobs
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user