mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-18 00:56:41 +10:00
Block renaming project or repository if it has container registry tags
This commit is contained in:
@@ -127,6 +127,10 @@ class Namespace < ActiveRecord::Base
|
||||
# Ensure old directory exists before moving it
|
||||
gitlab_shell.add_namespace(path_was)
|
||||
|
||||
if any_project_has_container_registry_tags?
|
||||
raise Exception.new('namespace cannot be moved, because at least one project has tags in container registry')
|
||||
end
|
||||
|
||||
if gitlab_shell.mv_namespace(path_was, path)
|
||||
Gitlab::UploadsTransfer.new.rename_namespace(path_was, path)
|
||||
|
||||
@@ -148,6 +152,10 @@ class Namespace < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def any_project_has_container_registry_tags?
|
||||
projects.any?(:has_container_registry_tags?)
|
||||
end
|
||||
|
||||
def send_update_instructions
|
||||
projects.each do |project|
|
||||
project.send_move_instructions("#{path_was}/#{project.path}")
|
||||
|
||||
@@ -391,6 +391,12 @@ class Project < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def has_container_registry_tags?
|
||||
if container_registry_enabled? && Gitlab.config.registry.enabled
|
||||
container_registry_repository.tags.any?
|
||||
end
|
||||
end
|
||||
|
||||
def commit(id = 'HEAD')
|
||||
repository.commit(id)
|
||||
end
|
||||
@@ -806,6 +812,11 @@ class Project < ActiveRecord::Base
|
||||
|
||||
expire_caches_before_rename(old_path_with_namespace)
|
||||
|
||||
if has_container_registry_tags?
|
||||
# we currently doesn't support renaming repository if it contains tags in container registry
|
||||
raise Exception.new('repository cannot be renamed, due to tags in container registry')
|
||||
end
|
||||
|
||||
if gitlab_shell.mv_repository(old_path_with_namespace, new_path_with_namespace)
|
||||
# If repository moved successfully we need to send update instructions to users.
|
||||
# However we cannot allow rollback since we moved repository
|
||||
|
||||
@@ -34,6 +34,11 @@ module Projects
|
||||
raise TransferError.new("Project with same path in target namespace already exists")
|
||||
end
|
||||
|
||||
if project.has_container_registry_tags?
|
||||
# we currently doesn't support renaming repository if it contains tags in container registry
|
||||
raise TransferError.new('Repository cannot be renamed, due to tags in container registry')
|
||||
end
|
||||
|
||||
project.expire_caches_before_rename(old_path)
|
||||
|
||||
# Apply new namespace id and visibility level
|
||||
|
||||
Reference in New Issue
Block a user