Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-06-20 13:43:29 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-06-20 13:43:29 +0300
commit3b1af5cc7ed2666ff18b718ce5d30fa5a2756674 (patch)
tree3bc4a40e0ee51ec27eabf917c537033c0c5b14d4 /lib/gitlab/import_export
parent9bba14be3f2c211bf79e15769cd9b77bc73a13bc (diff)
Add latest changes from gitlab-org/gitlab@16-1-stable-eev16.1.0-rc42
Diffstat (limited to 'lib/gitlab/import_export')
-rw-r--r--lib/gitlab/import_export/decompressed_archive_size_validator.rb2
-rw-r--r--lib/gitlab/import_export/group/import_export.yml1
-rw-r--r--lib/gitlab/import_export/group/tree_restorer.rb29
-rw-r--r--lib/gitlab/import_export/legacy_relation_tree_saver.rb23
-rw-r--r--lib/gitlab/import_export/project/exported_relations_merger.rb4
-rw-r--r--lib/gitlab/import_export/project/import_export.yml3
-rw-r--r--lib/gitlab/import_export/project/relation_factory.rb1
-rw-r--r--lib/gitlab/import_export/recursive_merge_folders.rb6
-rw-r--r--lib/gitlab/import_export/repo_restorer.rb2
9 files changed, 33 insertions, 38 deletions
diff --git a/lib/gitlab/import_export/decompressed_archive_size_validator.rb b/lib/gitlab/import_export/decompressed_archive_size_validator.rb
index 564008e7a73..104c9e6c456 100644
--- a/lib/gitlab/import_export/decompressed_archive_size_validator.rb
+++ b/lib/gitlab/import_export/decompressed_archive_size_validator.rb
@@ -85,7 +85,7 @@ module Gitlab
end
def validate_archive_path
- Gitlab::Utils.check_path_traversal!(@archive_path)
+ Gitlab::PathTraversal.check_path_traversal!(@archive_path)
raise(ServiceError, 'Archive path is a symlink') if File.lstat(@archive_path).symlink?
raise(ServiceError, 'Archive path is not a file') unless File.file?(@archive_path)
diff --git a/lib/gitlab/import_export/group/import_export.yml b/lib/gitlab/import_export/group/import_export.yml
index e30414265be..c2a1a1f8575 100644
--- a/lib/gitlab/import_export/group/import_export.yml
+++ b/lib/gitlab/import_export/group/import_export.yml
@@ -56,7 +56,6 @@ excluded_attributes:
- :runners_token
- :runners_token_encrypted
- :saml_discovery_token
- - :visibility_level
- :trial_ends_on
- :shared_runners_minute_limit
- :extra_shared_runners_minutes_limit
diff --git a/lib/gitlab/import_export/group/tree_restorer.rb b/lib/gitlab/import_export/group/tree_restorer.rb
index 19d707aaca5..0b92942eb8a 100644
--- a/lib/gitlab/import_export/group/tree_restorer.rb
+++ b/lib/gitlab/import_export/group/tree_restorer.rb
@@ -65,6 +65,15 @@ module Gitlab
# with existing groups name and/or path.
group_attributes.delete_attributes('name', 'path')
+ if @top_level_group.has_parent?
+ group_attributes.attributes['visibility_level'] = sub_group_visibility_level(
+ group_attributes.attributes['visibility_level'],
+ @top_level_group.parent
+ )
+ elsif Gitlab::VisibilityLevel.restricted_level?(group_attributes.attributes['visibility_level'])
+ group_attributes.delete_attribute('visibility_level')
+ end
+
restore_group(@top_level_group, group_attributes)
end
@@ -86,6 +95,7 @@ module Gitlab
parent_id = group_attributes.delete_attribute('parent_id')
name = group_attributes.delete_attribute('name')
path = group_attributes.delete_attribute('path')
+ visibility_level = group_attributes.delete_attribute('visibility_level')
parent_group = @groups_mapping.fetch(parent_id) { raise(ArgumentError, 'Parent group not found') }
@@ -94,7 +104,7 @@ module Gitlab
name: name,
path: path,
parent_id: parent_group.id,
- visibility_level: sub_group_visibility_level(group_attributes.attributes, parent_group)
+ visibility_level: sub_group_visibility_level(visibility_level, parent_group)
).execute
group.validate!
@@ -124,16 +134,23 @@ module Gitlab
end
end
- def sub_group_visibility_level(group_hash, parent_group)
- original_visibility_level = group_hash['visibility_level'] || Gitlab::VisibilityLevel::PRIVATE
+ def sub_group_visibility_level(visibility_level, parent_group)
+ parent_visibility_level = parent_group.visibility_level
- if parent_group && parent_group.visibility_level < original_visibility_level
- Gitlab::VisibilityLevel.closest_allowed_level(parent_group.visibility_level)
+ original_visibility_level = visibility_level ||
+ closest_allowed_level(parent_visibility_level)
+
+ if parent_visibility_level < original_visibility_level
+ closest_allowed_level(parent_visibility_level)
else
- original_visibility_level
+ closest_allowed_level(original_visibility_level)
end
end
+ def closest_allowed_level(visibility_level)
+ Gitlab::VisibilityLevel.closest_allowed_level(visibility_level)
+ end
+
def reader
strong_memoize(:reader) do
Gitlab::ImportExport::Reader.new(
diff --git a/lib/gitlab/import_export/legacy_relation_tree_saver.rb b/lib/gitlab/import_export/legacy_relation_tree_saver.rb
deleted file mode 100644
index cf75a2c7fa8..00000000000
--- a/lib/gitlab/import_export/legacy_relation_tree_saver.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module ImportExport
- class LegacyRelationTreeSaver
- include Gitlab::ImportExport::CommandLineUtil
-
- def serialize(exportable, relations_tree)
- Gitlab::ImportExport::FastHashSerializer
- .new(exportable, relations_tree)
- .execute
- end
-
- def save(tree, dir_path, filename)
- mkdir_p(dir_path)
-
- tree_json = ::JSON.generate(tree)
-
- File.write(File.join(dir_path, filename), tree_json)
- end
- end
- end
-end
diff --git a/lib/gitlab/import_export/project/exported_relations_merger.rb b/lib/gitlab/import_export/project/exported_relations_merger.rb
index dda3d00d608..b5eba768e56 100644
--- a/lib/gitlab/import_export/project/exported_relations_merger.rb
+++ b/lib/gitlab/import_export/project/exported_relations_merger.rb
@@ -20,8 +20,8 @@ module Gitlab
tar_gz_full_path = File.join(dirpath, filename)
decompress_path = File.join(dirpath, relation)
- Gitlab::Utils.check_path_traversal!(tar_gz_full_path)
- Gitlab::Utils.check_path_traversal!(decompress_path)
+ Gitlab::PathTraversal.check_path_traversal!(tar_gz_full_path)
+ Gitlab::PathTraversal.check_path_traversal!(decompress_path)
# Download tar.gz
download_or_copy_upload(
diff --git a/lib/gitlab/import_export/project/import_export.yml b/lib/gitlab/import_export/project/import_export.yml
index 36a3c73271b..410e918649b 100644
--- a/lib/gitlab/import_export/project/import_export.yml
+++ b/lib/gitlab/import_export/project/import_export.yml
@@ -121,7 +121,6 @@ tree:
- label:
- :priorities
- :service_desk_setting
- - :design_management_repository
group_members:
- :user
@@ -322,6 +321,7 @@ included_attributes:
- :feature_flags_access_level
- :releases_access_level
- :infrastructure_access_level
+ - :model_experiments_access_level
prometheus_metrics:
- :created_at
- :updated_at
@@ -742,6 +742,7 @@ included_attributes:
- :feature_flags_access_level
- :releases_access_level
- :infrastructure_access_level
+ - :model_experiments_access_level
- :auto_devops_deploy_strategy
- :auto_devops_enabled
- :container_registry_enabled
diff --git a/lib/gitlab/import_export/project/relation_factory.rb b/lib/gitlab/import_export/project/relation_factory.rb
index 5d7e3ea9ed7..8c673acdd1a 100644
--- a/lib/gitlab/import_export/project/relation_factory.rb
+++ b/lib/gitlab/import_export/project/relation_factory.rb
@@ -23,6 +23,7 @@ module Gitlab
design: 'DesignManagement::Design',
designs: 'DesignManagement::Design',
design_management_repository: 'DesignManagement::Repository',
+ design_management_repository_state: 'Geo::DesignManagementRepositoryState',
design_versions: 'DesignManagement::Version',
actions: 'DesignManagement::Action',
labels: :project_labels,
diff --git a/lib/gitlab/import_export/recursive_merge_folders.rb b/lib/gitlab/import_export/recursive_merge_folders.rb
index 982358699bd..827385d4daf 100644
--- a/lib/gitlab/import_export/recursive_merge_folders.rb
+++ b/lib/gitlab/import_export/recursive_merge_folders.rb
@@ -45,9 +45,9 @@ module Gitlab
DEFAULT_DIR_MODE = 0o700
def self.merge(source_path, target_path)
- Gitlab::Utils.check_path_traversal!(source_path)
- Gitlab::Utils.check_path_traversal!(target_path)
- Gitlab::Utils.check_allowed_absolute_path!(source_path, [Dir.tmpdir])
+ Gitlab::PathTraversal.check_path_traversal!(source_path)
+ Gitlab::PathTraversal.check_path_traversal!(target_path)
+ Gitlab::PathTraversal.check_allowed_absolute_path!(source_path, [Dir.tmpdir])
recursive_merge(source_path, target_path)
end
diff --git a/lib/gitlab/import_export/repo_restorer.rb b/lib/gitlab/import_export/repo_restorer.rb
index cc214d730fe..d7d262501de 100644
--- a/lib/gitlab/import_export/repo_restorer.rb
+++ b/lib/gitlab/import_export/repo_restorer.rb
@@ -42,7 +42,7 @@ module Gitlab
def ensure_repository_does_not_exist!
if repository.exists?
shared.logger.info(
- message: %Q{Deleting existing "#{repository.disk_path}" to re-import it.}
+ message: %{Deleting existing "#{repository.disk_path}" to re-import it.}
)
Repositories::DestroyService.new(repository).execute