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

enable_namespaces.rake « gitlab « tasks « lib - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 1be9ba6469d29860c9a3f62df7002d25136fa0e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
namespace :gitlab do
  desc "GITLAB | Enable usernames and namespaces for user projects"
  task enable_namespaces: :environment do
    print "\nUsernames for users:".yellow

    User.find_each(batch_size: 500) do |user|
      next if user.namespace

      User.transaction do
        username = user.email.match(/^[^@]*/)[0]
        if user.update_attributes!(username: username)
          print '.'.green
        else
          print 'F'.red
        end
      end
    end

    print "\n\nDirs for groups:".yellow

    Group.find_each(batch_size: 500) do |group|
      if group.ensure_dir_exist
        print '.'.green
      else
        print 'F'.red
      end
    end

    print "\n\nMove projects from groups under groups dirs:".yellow
    git_path = Gitlab.config.gitolite.repos_path

    Project.where('namespace_id IS NOT NULL').find_each(batch_size: 500) do |project|
      next unless project.group

      group = project.group

      puts "\n"
      print " * #{project.name}: "

      new_path = File.join(git_path, project.path_with_namespace + '.git')

      if File.exists?(new_path)
        print "ok. already at #{new_path}".cyan
        next
      end

      old_path = File.join(git_path, project.path + '.git')

      unless File.exists?(old_path)
        print "missing. not found at #{old_path}".red
        next
      end

      begin
        Gitlab::ProjectMover.new(project, '', group.path).execute
        print "ok. Moved to #{new_path}".green
      rescue
        print "Failed moving to #{new_path}".red
      end
    end

    print "\n\nRebuild gitolite:".yellow
    gitolite = Gitlab::Gitolite.new
    gitolite.update_repositories(Project.where('namespace_id IS NOT NULL'))
    puts "\n"
  end
end