summaryrefslogtreecommitdiff
path: root/lib/gitlab/database/rename_reserved_paths_migration/rename_projects.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/rename_reserved_paths_migration/rename_projects.rb')
-rw-r--r--lib/gitlab/database/rename_reserved_paths_migration/rename_projects.rb38
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/gitlab/database/rename_reserved_paths_migration/rename_projects.rb b/lib/gitlab/database/rename_reserved_paths_migration/rename_projects.rb
new file mode 100644
index 00000000000..02f10d8e951
--- /dev/null
+++ b/lib/gitlab/database/rename_reserved_paths_migration/rename_projects.rb
@@ -0,0 +1,38 @@
+module Gitlab
+ module Database
+ module RenameReservedPathsMigration
+ class RenameProjects < RenameBase
+ include Gitlab::ShellAdapter
+
+ def rename_projects
+ projects_for_paths.each do |project|
+ rename_project(project)
+ end
+ end
+
+ def rename_project(project)
+ old_full_path, new_full_path = rename_path_for_routable(project)
+
+ move_repository(project, old_full_path, new_full_path)
+ move_repository(project, "#{old_full_path}.wiki", "#{new_full_path}.wiki")
+ move_uploads(old_full_path, new_full_path)
+ move_pages(old_full_path, new_full_path)
+ end
+
+ def move_repository(project, old_path, new_path)
+ unless gitlab_shell.mv_repository(project.repository_storage_path,
+ old_path,
+ new_path)
+ Rails.logger.error "Error moving #{old_path} to #{new_path}"
+ end
+ end
+
+ def projects_for_paths
+ with_paths = MigrationClasses::Project.arel_table[:path]
+ .matches_any(paths)
+ MigrationClasses::Project.where(with_paths)
+ end
+ end
+ end
+ end
+end