From bac27df16c35abb2f8115d9c94edcc4ecbace1a7 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 19 May 2016 13:10:41 +0200 Subject: [PATCH] Squashed commit of the following: commit 92de6309e1c918a4ae023641dc42b196b3fb25ea Merge: 6c082ed 30f4dcd Author: James Lopez Date: Thu May 19 13:06:34 2016 +0200 Merge branches 'feature/project-export' and 'feature/project-import' of gitlab.com:gitlab-org/gitlab-ce into feature/project-import commit 30f4dcd4c906a71db98833075c76eb59922f5b98 Author: James Lopez Date: Thu May 19 13:02:57 2016 +0200 uploads export --- .../projects/import_export/export_service.rb | 6 +++- lib/gitlab/import_export/uploads_saver.rb | 35 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 lib/gitlab/import_export/uploads_saver.rb diff --git a/app/services/projects/import_export/export_service.rb b/app/services/projects/import_export/export_service.rb index 0691ca9d468..1a23a4ede97 100644 --- a/app/services/projects/import_export/export_service.rb +++ b/app/services/projects/import_export/export_service.rb @@ -4,7 +4,7 @@ module Projects def execute(options = {}) @shared = Gitlab::ImportExport::Shared.new(relative_path: File.join(project.path_with_namespace, 'work')) - save_all if [save_version, save_project_tree, bundle_repo, bundle_wiki_repo].all? + save_all if [save_version, save_project_tree, save_uploads, bundle_repo, bundle_wiki_repo].all? cleanup_and_notify_worker if @shared.errors.any? end @@ -18,6 +18,10 @@ module Projects Gitlab::ImportExport::ProjectTreeSaver.new(project: project, shared: @shared).save end + def save_uploads + Gitlab::ImportExport::UploadsSaver.save(project: project, shared: @shared) + end + def bundle_repo Gitlab::ImportExport::RepoBundler.new(project: project, shared: @shared).bundle end diff --git a/lib/gitlab/import_export/uploads_saver.rb b/lib/gitlab/import_export/uploads_saver.rb new file mode 100644 index 00000000000..3420d2ea4cb --- /dev/null +++ b/lib/gitlab/import_export/uploads_saver.rb @@ -0,0 +1,35 @@ +module Gitlab + module ImportExport + class UploadsSaver + + def self.save(*args) + new(*args).save + end + + def initialize(project:, shared:) + @project = project + @shared = shared + end + + def save + return true unless File.directory?(uploads_path) + + FileUtils.copy_entry(uploads_path, uploads_export_path) + true + rescue => e + @shared.error(e.message) + false + end + + private + + def uploads_export_path + File.join(@shared.export_path, 'uploads') + end + + def uploads_path + File.join(Rails.root.join('public/uploads'), project.path_with_namespace) + end + end + end +end -- GitLab