diff options
Diffstat (limited to 'app/services/projects/update_service.rb')
-rw-r--r-- | app/services/projects/update_service.rb | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb index 336e887c241..cfcbe42997b 100644 --- a/app/services/projects/update_service.rb +++ b/app/services/projects/update_service.rb @@ -61,11 +61,8 @@ module Projects raise_validation_error(s_('UpdateProject|New visibility level not allowed!')) end - if renaming_project_with_container_registry_tags? - raise_validation_error(s_('UpdateProject|Cannot rename project because it contains container registry tags!')) - end - validate_default_branch_change + validate_renaming_project_with_tags end def validate_default_branch_change @@ -92,6 +89,28 @@ module Projects end end + def validate_renaming_project_with_tags + return unless renaming_project_with_container_registry_tags? + + unless Feature.enabled?(:renaming_project_with_tags, project) && + ContainerRegistry::GitlabApiClient.supports_gitlab_api? + raise ValidationError, s_('UpdateProject|Cannot rename project because it contains container registry tags!') + end + + dry_run = ContainerRegistry::GitlabApiClient.rename_base_repository_path( + project.full_path, name: params[:path], dry_run: true) + + return if dry_run == :accepted + + log_error("Dry run failed for renaming project with tags: #{project.full_path}, error: #{dry_run}") + raise_validation_error( + format( + s_("UpdateProject|Cannot rename project, the container registry path rename validation failed: %{error}"), + error: dry_run.to_s.titleize + ) + ) + end + def ambiguous_head_documentation_link url = Rails.application.routes.url_helpers.help_page_path('user/project/repository/branches/index', anchor: 'error-ambiguous-head-branch-exists') |