Commit 137594dd08e739a68af656d697a5b8c6be23854f
Exists in
master
and in
4 other branches
Merge pull request #1339 from chopmann/fix-import_bulk
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 | 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 | 8 | puts "Found #{repos_to_import.length} repos to import" |
| 11 | 9 | |
| 12 | 10 | imported_count = 0 |
| ... | ... | @@ -14,11 +12,9 @@ task :import_projects, [:email] => :environment do |t, args| |
| 14 | 12 | failed_count = 0 |
| 15 | 13 | repos_to_import.each do |repo_path| |
| 16 | 14 | repo_name = File.basename repo_path |
| 17 | - repo_full_path = File.join(Rails.root, repo_path) | |
| 18 | 15 | |
| 19 | 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 | 19 | if Dir.exists? clone_path |
| 24 | 20 | if Project.find_by_code(repo_name) |
| ... | ... | @@ -30,7 +26,7 @@ task :import_projects, [:email] => :environment do |t, args| |
| 30 | 26 | end |
| 31 | 27 | else |
| 32 | 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 | 30 | failed_count += 1 |
| 35 | 31 | next |
| 36 | 32 | end |
| ... | ... | @@ -48,14 +44,17 @@ task :import_projects, [:email] => :environment do |t, args| |
| 48 | 44 | puts "Finished importing #{imported_count} projects (skipped #{skipped_count}, failed #{failed_count})." |
| 49 | 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 | 48 | def clone_bare_repo_as_git(existing_path, new_path) |
| 49 | + git_user = Gitlab.config.ssh_user | |
| 53 | 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 | 52 | true |
| 56 | - rescue | |
| 53 | + rescue Exception=> msg | |
| 57 | 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 | 58 | end |
| 60 | 59 | end |
| 61 | 60 | ... | ... |