OSDN Git Service

Remove Global namespace from options. Prepared file for migration of global projects
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Wed, 19 Jun 2013 15:32:08 +0000 (18:32 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Wed, 19 Jun 2013 15:32:08 +0000 (18:32 +0300)
app/contexts/projects/create_context.rb
app/contexts/projects/transfer_context.rb
app/controllers/admin/projects_controller.rb
app/helpers/namespaces_helper.rb
app/views/projects/edit.html.haml
lib/tasks/migrate/migrate_global_projects.rake [new file with mode: 0644]

index d3b8dee..4045fe1 100644 (file)
@@ -33,7 +33,7 @@ module Projects
         # Find matching namespace and check if it allowed
         # for current user if namespace_id passed.
         if allowed_namespace?(current_user, namespace_id)
-          @project.namespace_id = namespace_id unless namespace_id == Namespace.global_id
+          @project.namespace_id = namespace_id
         else
           deny_namespace
           return @project
@@ -75,12 +75,8 @@ module Projects
     end
 
     def allowed_namespace?(user, namespace_id)
-      if namespace_id == Namespace.global_id
-        return user.admin
-      else
-        namespace = Namespace.find_by_id(namespace_id)
-        current_user.can?(:manage_namespace, namespace)
-      end
+      namespace = Namespace.find_by_id(namespace_id)
+      current_user.can?(:manage_namespace, namespace)
     end
   end
 end
index aed396a..3011984 100644 (file)
@@ -5,12 +5,7 @@ module Projects
       allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin
 
       if allowed_transfer && namespace_id.present?
-        if namespace_id == Namespace.global_id
-          if project.namespace.present?
-            # Transfer to global namespace from anyone
-            project.transfer(nil)
-          end
-        elsif namespace_id.to_i != project.namespace_id
+        if namespace_id.to_i != project.namespace_id
           # Transfer to someone namespace
           namespace = Namespace.find(namespace_id)
           project.transfer(namespace)
index a63c469..e73a54d 100644 (file)
@@ -9,7 +9,6 @@ class Admin::ProjectsController < Admin::ApplicationController
     @projects = @projects.where(public: true) if params[:public_only].present?
     @projects = @projects.with_push if params[:with_push].present?
     @projects = @projects.abandoned if params[:abandoned].present?
-    @projects = @projects.where(namespace_id: nil) if params[:namespace_id] == Namespace.global_id
     @projects = @projects.search(params[:name]) if params[:name].present?
     @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20)
   end
index 69ad3de..a6fcf8d 100644 (file)
@@ -3,7 +3,6 @@ module NamespacesHelper
     groups = current_user.owned_groups.select {|n| n.type == 'Group'}
     users = current_user.namespaces.reject {|n| n.type == 'Group'}
 
-    global_opts = ["Global", [['/', Namespace.global_id]] ]
     group_opts = ["Groups", groups.sort_by(&:human_name).map {|g| [g.human_name, g.id]} ]
     users_opts = [ "Users", users.sort_by(&:human_name).map {|u| [u.human_name, u.id]} ]
 
index bec64bf..43199bc 100644 (file)
                         %span Namespace
                       .controls
                         .clearfix
-                          = f.select :namespace_id, namespaces_options(@project.namespace_id || Namespace::global_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
+                          = f.select :namespace_id, namespaces_options(@project.namespace_id), {prompt: 'Choose a project namespace'}, {class: 'chosen'}
                         %ul
                           %li Be careful. Changing project namespace can have unintended side effects
                           %li You can transfer project only to namespaces you can manage
diff --git a/lib/tasks/migrate/migrate_global_projects.rake b/lib/tasks/migrate/migrate_global_projects.rake
new file mode 100644 (file)
index 0000000..f2f7472
--- /dev/null
@@ -0,0 +1,12 @@
+desc "GITLAB | Migrate Global Projects to Namespaces"
+task migrate_global_projects: :environment do
+  puts "This will move all projects without namespace to owner namespace"
+  ask_to_continue
+
+  Project.where(namespace_id: nil).find_each(batch_size: 20) do |project|
+
+    # TODO: transfer code here
+    print '.'
+  end
+end
+