Commit b3c8688da33ac2fd79d733fc9992a526c18c2c40
Committed by
Hopmann, Cornelio
1 parent
e4447de2
Exists in
master
and in
4 other branches
fix bulk_import for #1309
Showing
1 changed file
with
14 additions
and
15 deletions
Show diff stats
lib/tasks/bulk_import.rake
1 | -IMPORT_DIRECTORY = 'import_projects' | ||
2 | - | ||
3 | -desc "Imports existing Git repos into new projects from the import_projects folder" | ||
4 | -task :import_projects, [:email] => :environment do |t, args| | ||
5 | - REPOSITORY_DIRECTORY = Gitlab.config.git_base_path | ||
6 | 1 | ||
2 | +desc "Imports existing Git repos from a directory into new projects in git_base_path" | ||
3 | +task :import_projects, [:directory,:email] => :environment do |t, args| | ||
7 | user_email = args.email | 4 | user_email = args.email |
8 | - repos_to_import = Dir.glob("#{IMPORT_DIRECTORY}/*") | ||
9 | - | 5 | + import_directory = args.directory |
6 | + repos_to_import = Dir.glob("#{import_directory}/*") | ||
7 | + git_base_path = Gitlab.config.git_base_path | ||
10 | puts "Found #{repos_to_import.length} repos to import" | 8 | puts "Found #{repos_to_import.length} repos to import" |
11 | 9 | ||
12 | imported_count = 0 | 10 | imported_count = 0 |
@@ -14,11 +12,9 @@ task :import_projects, [:email] => :environment do |t, args| | @@ -14,11 +12,9 @@ task :import_projects, [:email] => :environment do |t, args| | ||
14 | failed_count = 0 | 12 | failed_count = 0 |
15 | repos_to_import.each do |repo_path| | 13 | repos_to_import.each do |repo_path| |
16 | repo_name = File.basename repo_path | 14 | repo_name = File.basename repo_path |
17 | - repo_full_path = File.join(Rails.root, repo_path) | ||
18 | 15 | ||
19 | puts " Processing #{repo_name}" | 16 | puts " Processing #{repo_name}" |
20 | - | ||
21 | - clone_path = "#{REPOSITORY_DIRECTORY}/#{repo_name}.git" | 17 | + clone_path = "#{git_base_path}#{repo_name}.git" |
22 | 18 | ||
23 | if Dir.exists? clone_path | 19 | if Dir.exists? clone_path |
24 | if Project.find_by_code(repo_name) | 20 | if Project.find_by_code(repo_name) |
@@ -30,7 +26,7 @@ task :import_projects, [:email] => :environment do |t, args| | @@ -30,7 +26,7 @@ task :import_projects, [:email] => :environment do |t, args| | ||
30 | end | 26 | end |
31 | else | 27 | else |
32 | # Clone the repo | 28 | # Clone the repo |
33 | - unless clone_bare_repo_as_git(repo_full_path, clone_path) | 29 | + unless clone_bare_repo_as_git(repo_path, clone_path) |
34 | failed_count += 1 | 30 | failed_count += 1 |
35 | next | 31 | next |
36 | end | 32 | end |
@@ -48,14 +44,17 @@ task :import_projects, [:email] => :environment do |t, args| | @@ -48,14 +44,17 @@ task :import_projects, [:email] => :environment do |t, args| | ||
48 | puts "Finished importing #{imported_count} projects (skipped #{skipped_count}, failed #{failed_count})." | 44 | puts "Finished importing #{imported_count} projects (skipped #{skipped_count}, failed #{failed_count})." |
49 | end | 45 | end |
50 | 46 | ||
51 | -# Clones a repo as bare git repo using the git user | 47 | +# Clones a repo as bare git repo using the git_user |
52 | def clone_bare_repo_as_git(existing_path, new_path) | 48 | def clone_bare_repo_as_git(existing_path, new_path) |
49 | + git_user = Gitlab.config.ssh_user | ||
53 | begin | 50 | begin |
54 | - sh "sudo -u git -i git clone --bare '#{existing_path}' #{new_path}" | 51 | + sh "sudo -u #{git_user} -i git clone --bare '#{existing_path}' #{new_path}" |
55 | true | 52 | true |
56 | - rescue | 53 | + rescue Exception=> msg |
57 | puts " ERROR: Faild to clone #{existing_path} to #{new_path}" | 54 | puts " ERROR: Faild to clone #{existing_path} to #{new_path}" |
58 | - false | 55 | + puts " Make sure #{git_user} can reach #{existing_path}" |
56 | + puts " Exception-MSG: #{msg}" | ||
57 | + false | ||
59 | end | 58 | end |
60 | end | 59 | end |
61 | 60 |