blob: bddbd7ef8559b67e21cdf0c00205f6501d45c373 (
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
|
namespace :gitlab do
namespace :import do
# How to use:
#
# 1. copy your bare repos under git base_path
# 2. run bundle exec rake gitlab:import:repos RAILS_ENV=production
#
# Notes:
# * project owner will be a first admin
# * existing projects will be skipped
#
desc "GITLAB | Import bare repositories from git_host -> base_path into GitLab project instance"
task :repos => :environment do
git_base_path = Gitlab.config.gitlab_shell.repos_path
repos_to_import = Dir.glob(git_base_path + '/*')
namespaces = Namespace.pluck(:path)
repos_to_import.each do |repo_path|
repo_name = File.basename repo_path
# Skip if group or user
next if namespaces.include?(repo_name)
# skip if not git repo
next unless repo_name =~ /.git$/
next if repo_name == 'gitolite-admin.git'
path = repo_name.sub(/\.git$/, '')
project = Project.find_with_namespace(path)
puts "Processing #{repo_name}".yellow
if project
puts " * #{project.name} (#{repo_name}) exists"
else
user = User.admins.first
project_params = {
:name => path,
}
project = Projects::CreateContext.new(user, project_params).execute
if project.valid?
puts " * Created #{project.name} (#{repo_name})".green
else
puts " * Failed trying to create #{project.name} (#{repo_name})".red
end
end
end
puts "Done!".green
end
end
end
|