summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2016-05-19 13:02:57 +0200
committerJames Lopez <james@jameslopez.es>2016-05-19 13:02:57 +0200
commit30f4dcd4c906a71db98833075c76eb59922f5b98 (patch)
treea8857ede8b45c87e62c33f9305f8ce67012a7111
parenta5f04ad48849b94aabeeb7450c6059e76372855c (diff)
downloadgitlab-ce-30f4dcd4c906a71db98833075c76eb59922f5b98.tar.gz
uploads export
-rw-r--r--app/services/projects/import_export/export_service.rb6
-rw-r--r--lib/gitlab/import_export/uploads_saver.rb35
2 files changed, 40 insertions, 1 deletions
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