diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 1d4684ca22ecd00c6b44963407365173b9c7ea0f..62f8b376c18bd2f8995809fd9e157e9e0ae92a84 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -191,6 +191,7 @@ class ProjectsController < Projects::ApplicationController end def export + #TODO: Move to worker ::Projects::ImportExport::ExportService.new(@project, current_user).execute redirect_to( @@ -267,6 +268,7 @@ class ProjectsController < Projects::ApplicationController def export_project_path # TODO: move this, probably to ImportExport and refactor - File.join(Settings.shared['path'], 'tmp/project_exports', @project.path_with_namespace, 'project.tar.gz') + folder = File.join(Settings.shared['path'], 'tmp/project_exports', @project.path_with_namespace) + Dir.glob("#{folder}/*export.tar.gz").max_by {|f| File.ctime(f)} end end diff --git a/app/services/projects/import_export/export_service.rb b/app/services/projects/import_export/export_service.rb index 8b641008a88e40c32b13bcdfae4db35bac53671b..5d5573cba5c7e0d8717cd6fdda645263359396d3 100644 --- a/app/services/projects/import_export/export_service.rb +++ b/app/services/projects/import_export/export_service.rb @@ -3,7 +3,7 @@ module Projects class ExportService < BaseService def execute(options = {}) - @shared = Gitlab::ImportExport::Shared.new(relative_path: project.path_with_namespace) + @shared = Gitlab::ImportExport::Shared.new(relative_path: File.join(project.path_with_namespace, 'work')) save_project_tree bundle_repo save_all diff --git a/lib/gitlab/import_export/command_line_util.rb b/lib/gitlab/import_export/command_line_util.rb index 1140e7beb9a16921eb6e4923bcd78e15dc2decbc..9fc83afc4f75256ad00b369a51e2ae4b5ab9eeba 100644 --- a/lib/gitlab/import_export/command_line_util.rb +++ b/lib/gitlab/import_export/command_line_util.rb @@ -24,7 +24,7 @@ module Gitlab end def tar_with_options(archive:, dir:, options:) - cmd = %W(tar -#{options} #{archive} #{dir}) + cmd = %W(tar -#{options} #{archive} -C #{dir} .) _output, status = Gitlab::Popen.popen(cmd) status.zero? end diff --git a/lib/gitlab/import_export/saver.rb b/lib/gitlab/import_export/saver.rb index f87e0fdc7ea20a628220d7fcf5b62a42a5ead753..634e58e6039935f80ef348d14d97e3c6e8a66be9 100644 --- a/lib/gitlab/import_export/saver.rb +++ b/lib/gitlab/import_export/saver.rb @@ -14,6 +14,7 @@ module Gitlab def save if compress_and_save remove_storage_path + Rails.logger.info("Saved project export #{archive_file}") archive_file else false