9a73b634ab
This adds an ID-less table containing one row per file, per merge request diff. It has a column for each attribute on Gitlab::Git::Diff that is serialised currently, with the advantage that we can easily query the attributes of this new table. It does not migrate existing data, so we have fallback code when the legacy st_diffs column is present instead. For a merge request diff to be valid, it should have at most one of: * Rows in this new table, with the correct merge_request_diff_id. * A non-NULL st_diffs column. It may have neither, if the diff is empty.
51 lines
1 KiB
Ruby
51 lines
1 KiB
Ruby
module Gitlab
|
|
module ImportExport
|
|
extend self
|
|
|
|
# For every version update, the version history in import_export.md has to be kept up to date.
|
|
VERSION = '0.1.8'.freeze
|
|
FILENAME_LIMIT = 50
|
|
|
|
def export_path(relative_path:)
|
|
File.join(storage_path, relative_path)
|
|
end
|
|
|
|
def storage_path
|
|
File.join(Settings.shared['path'], 'tmp/project_exports')
|
|
end
|
|
|
|
def import_upload_path(filename:)
|
|
File.join(storage_path, 'uploads', filename)
|
|
end
|
|
|
|
def project_filename
|
|
"project.json"
|
|
end
|
|
|
|
def project_bundle_filename
|
|
"project.bundle"
|
|
end
|
|
|
|
def config_file
|
|
Rails.root.join('lib/gitlab/import_export/import_export.yml')
|
|
end
|
|
|
|
def version_filename
|
|
'VERSION'
|
|
end
|
|
|
|
def export_filename(project:)
|
|
basename = "#{Time.now.strftime('%Y-%m-%d_%H-%M-%3N')}_#{project.full_path.tr('/', '_')}"
|
|
|
|
"#{basename[0..FILENAME_LIMIT]}_export.tar.gz"
|
|
end
|
|
|
|
def version
|
|
VERSION
|
|
end
|
|
|
|
def reset_tokens?
|
|
true
|
|
end
|
|
end
|
|
end
|