1# frozen_string_literal: true 2 3module Gitlab 4 module ImportExport 5 extend self 6 7 # For every version update the version history in these docs must be kept up to date: 8 # - development/import_export.md 9 # - user/project/settings/import_export.md 10 VERSION = '0.2.4' 11 FILENAME_LIMIT = 50 12 13 def export_path(relative_path:) 14 File.join(storage_path, relative_path) 15 end 16 17 def storage_path 18 File.join(Settings.shared['path'], 'tmp/gitlab_exports') 19 end 20 21 def import_upload_path(filename:) 22 File.join(storage_path, 'uploads', filename) 23 end 24 25 def project_filename 26 "project.json" 27 end 28 29 def project_bundle_filename 30 "project.bundle" 31 end 32 33 def lfs_objects_filename 34 "lfs-objects.json" 35 end 36 37 def lfs_objects_storage 38 "lfs-objects" 39 end 40 41 def wiki_repo_bundle_filename 42 "project.wiki.bundle" 43 end 44 45 def design_repo_bundle_filename 46 'project.design.bundle' 47 end 48 49 def snippet_repo_bundle_dir 50 'snippets' 51 end 52 53 def snippets_repo_bundle_path(absolute_path) 54 File.join(absolute_path, ::Gitlab::ImportExport.snippet_repo_bundle_dir) 55 end 56 57 def snippet_repo_bundle_filename_for(snippet) 58 "#{snippet.hexdigest}.bundle" 59 end 60 61 def config_file 62 Rails.root.join('lib/gitlab/import_export/project/import_export.yml') 63 end 64 65 def version_filename 66 'VERSION' 67 end 68 69 def gitlab_version_filename 70 'GITLAB_VERSION' 71 end 72 73 def gitlab_revision_filename 74 'GITLAB_REVISION' 75 end 76 77 def export_filename(exportable:) 78 basename = "#{Time.now.strftime('%Y-%m-%d_%H-%M-%3N')}_#{exportable.full_path.tr('/', '_')}" 79 80 "#{basename[0..FILENAME_LIMIT]}_export.tar.gz" 81 end 82 83 def version 84 VERSION 85 end 86 87 def reset_tokens? 88 true 89 end 90 91 def group_filename 92 'group.json' 93 end 94 95 def legacy_group_config_file 96 Rails.root.join('lib/gitlab/import_export/group/legacy_import_export.yml') 97 end 98 99 def group_config_file 100 Rails.root.join('lib/gitlab/import_export/group/import_export.yml') 101 end 102 103 def group_wiki_repo_bundle_filename(group_id) 104 "#{group_id}.wiki.bundle" 105 end 106 107 def group_wiki_repo_bundle_path(shared, filename) 108 File.join(shared.export_path, 'repositories', filename) 109 end 110 111 def group_wiki_repo_bundle_full_path(shared, group_id) 112 group_wiki_repo_bundle_path(shared, group_wiki_repo_bundle_filename(group_id)) 113 end 114 end 115end 116 117Gitlab::ImportExport.prepend_mod 118