Commit 9d0038f2 authored by James Lopez's avatar James Lopez

started refactoring a bunch of stuff based on feedback

parent 398f0071
...@@ -2,36 +2,39 @@ module Projects ...@@ -2,36 +2,39 @@ module Projects
module ImportExport module ImportExport
class ExportService < BaseService class ExportService < BaseService
def execute(options = {}) def execute(_options = {})
@shared = Gitlab::ImportExport::Shared.new(relative_path: File.join(project.path_with_namespace, 'work')) @shared = Gitlab::ImportExport::Shared.new(relative_path: File.join(project.path_with_namespace, 'work'))
save_all if [save_version, save_project_tree, save_uploads, bundle_repo, bundle_wiki_repo].all? save_all
cleanup_and_notify_worker if @shared.errors.any?
end end
private private
def save_version def save_all
Gitlab::ImportExport::VersionSaver.save(shared: @shared) if [version_saver, project_tree_saver, uploads_saver, repo_saver, wiki_repo_saver].all?(&:save)
Gitlab::ImportExport::Saver.save(shared: @shared)
else
cleanup_and_notify_worker
end
end end
def save_project_tree def version_saver
Gitlab::ImportExport::ProjectTreeSaver.new(project: project, shared: @shared).save Gitlab::ImportExport::VersionSaver.new(shared: @shared)
end end
def save_uploads def project_tree_saver
Gitlab::ImportExport::UploadsSaver.save(project: project, shared: @shared) Gitlab::ImportExport::ProjectTreeSaver.new(project: project, shared: @shared)
end end
def bundle_repo def uploads_saver
Gitlab::ImportExport::RepoBundler.new(project: project, shared: @shared).bundle Gitlab::ImportExport::UploadsSaver.new(project: project, shared: @shared)
end end
def bundle_wiki_repo def repo_saver
Gitlab::ImportExport::WikiRepoBundler.new(project: project, shared: @shared).bundle Gitlab::ImportExport::RepoSaver.new(project: project, shared: @shared)
end end
def save_all def wiki_repo_saver
Gitlab::ImportExport::Saver.save(shared: @shared) Gitlab::ImportExport::WikiRepoSaver.new(project: project, shared: @shared)
end end
def cleanup_and_notify_worker def cleanup_and_notify_worker
......
...@@ -16,6 +16,8 @@ project_tree: ...@@ -16,6 +16,8 @@ project_tree:
- :merge_request_diff - :merge_request_diff
- ci_commits: - ci_commits:
- :statuses - :statuses
- notes:
:author
- :variables - :variables
- :triggers - :triggers
- :deploy_keys - :deploy_keys
......
module Gitlab module Gitlab
module ImportExport module ImportExport
class RepoBundler class RepoSaver
include Gitlab::ImportExport::CommandLineUtil include Gitlab::ImportExport::CommandLineUtil
attr_reader :full_path attr_reader :full_path
...@@ -10,7 +10,7 @@ module Gitlab ...@@ -10,7 +10,7 @@ module Gitlab
@shared = shared @shared = shared
end end
def bundle def save
return false if @project.empty_repo? return false if @project.empty_repo?
@full_path = File.join(@shared.export_path, ImportExport.project_bundle_filename) @full_path = File.join(@shared.export_path, ImportExport.project_bundle_filename)
bundle_to_disk bundle_to_disk
......
...@@ -2,10 +2,6 @@ module Gitlab ...@@ -2,10 +2,6 @@ module Gitlab
module ImportExport module ImportExport
class UploadsSaver class UploadsSaver
def self.save(*args)
new(*args).save
end
def initialize(project:, shared:) def initialize(project:, shared:)
@project = project @project = project
@shared = shared @shared = shared
......
...@@ -2,10 +2,6 @@ module Gitlab ...@@ -2,10 +2,6 @@ module Gitlab
module ImportExport module ImportExport
class VersionSaver class VersionSaver
def self.save(*args)
new(*args).save
end
def initialize(shared:) def initialize(shared:)
@shared = shared @shared = shared
end end
......
module Gitlab module Gitlab
module ImportExport module ImportExport
class WikiRepoBundler < RepoBundler class WikiRepoSaver < RepoSaver
def bundle def save
@wiki = ProjectWiki.new(@project) @wiki = ProjectWiki.new(@project)
return true unless wiki_repository_exists? # it's okay to have no Wiki return true unless wiki_repository_exists? # it's okay to have no Wiki
bundle_to_disk(File.join(@shared.export_path, project_filename)) bundle_to_disk(File.join(@shared.export_path, project_filename))
......
require 'spec_helper' require 'spec_helper'
describe Gitlab::ImportExport::RepoBundler, services: true do describe Gitlab::ImportExport::RepoSaver, services: true do
describe 'bundle a project Git repo' do describe 'bundle a project Git repo' do
let(:user) { create(:user) } let(:user) { create(:user) }
...@@ -19,7 +19,7 @@ describe Gitlab::ImportExport::RepoBundler, services: true do ...@@ -19,7 +19,7 @@ describe Gitlab::ImportExport::RepoBundler, services: true do
end end
it 'bundles the repo successfully' do it 'bundles the repo successfully' do
expect(bundler.bundle).to be true expect(bundler.save).to be true
end end
end end
end end
require 'spec_helper' require 'spec_helper'
describe Gitlab::ImportExport::WikiRepoBundler, services: true do describe Gitlab::ImportExport::WikiRepoSaver, services: true do
describe 'bundle a wiki Git repo' do describe 'bundle a wiki Git repo' do
let(:user) { create(:user) } let(:user) { create(:user) }
...@@ -22,7 +22,7 @@ describe Gitlab::ImportExport::WikiRepoBundler, services: true do ...@@ -22,7 +22,7 @@ describe Gitlab::ImportExport::WikiRepoBundler, services: true do
end end
it 'bundles the repo successfully' do it 'bundles the repo successfully' do
expect(wiki_bundler.bundle).to be true expect(wiki_bundler.save).to be true
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment