Commit 3fd3e1fcdf69e8544b25193a6e2a53716c65096c
1 parent
60fee48e
Exists in
master
and in
4 other branches
Added detection and handling of exsiting repos
Showing
1 changed file
with
37 additions
and
18 deletions
Show diff stats
lib/tasks/bulk_import.rake
| @@ -20,21 +20,28 @@ task :import_projects, [:email] => :environment do |t, args| | @@ -20,21 +20,28 @@ task :import_projects, [:email] => :environment do |t, args| | ||
| 20 | clone_path = "#{REPOSITORY_DIRECTORY}/#{repo_name}.git" | 20 | clone_path = "#{REPOSITORY_DIRECTORY}/#{repo_name}.git" |
| 21 | 21 | ||
| 22 | if Dir.exists? clone_path | 22 | if Dir.exists? clone_path |
| 23 | - puts " INFO: #{clone_path} already exists in repositories directory, skipping." | ||
| 24 | - skipped_count += 1 | ||
| 25 | - next | ||
| 26 | - else | ||
| 27 | - if clone_bare_repo_as_git(repo_full_path, clone_path) | ||
| 28 | - if create_repo_project(repo_name, user_email) | ||
| 29 | - imported_count += 1 | ||
| 30 | - else | ||
| 31 | - failed_count += 1 | ||
| 32 | - end | 23 | + if Project.find_by_code(repo_name) |
| 24 | + puts " INFO: #{clone_path} already exists in repositories directory, skipping." | ||
| 25 | + skipped_count += 1 | ||
| 26 | + next | ||
| 33 | else | 27 | else |
| 28 | + puts " INFO: Project doesn't exist for #{repo_name} (but the repo does)." | ||
| 29 | + end | ||
| 30 | + else | ||
| 31 | + # Clone the repo | ||
| 32 | + unless clone_bare_repo_as_git(repo_full_path, clone_path) | ||
| 34 | failed_count += 1 | 33 | failed_count += 1 |
| 34 | + next | ||
| 35 | end | 35 | end |
| 36 | end | 36 | end |
| 37 | 37 | ||
| 38 | + # Create the project and repo | ||
| 39 | + if create_repo_project(repo_name, user_email) | ||
| 40 | + imported_count += 1 | ||
| 41 | + else | ||
| 42 | + failed_count += 1 | ||
| 43 | + end | ||
| 44 | + | ||
| 38 | end | 45 | end |
| 39 | 46 | ||
| 40 | puts "Finished importing #{imported_count} projects (skipped #{skipped_count}, failed #{failed_count})." | 47 | puts "Finished importing #{imported_count} projects (skipped #{skipped_count}, failed #{failed_count})." |
| @@ -61,13 +68,25 @@ def create_repo_project(project_name, user_email) | @@ -61,13 +68,25 @@ def create_repo_project(project_name, user_email) | ||
| 61 | puts " INFO: Project #{project_name} already exists in Gitlab, skipping." | 68 | puts " INFO: Project #{project_name} already exists in Gitlab, skipping." |
| 62 | false | 69 | false |
| 63 | else | 70 | else |
| 64 | - project = Project.create( | ||
| 65 | - name: project_name, | ||
| 66 | - code: project_name, | ||
| 67 | - path: project_name, | ||
| 68 | - owner: user, | ||
| 69 | - description: "Automatically created from Rake on #{Time.now.to_s}" | ||
| 70 | - ) | 71 | + project = nil |
| 72 | + if Project.find_by_code(project_name) | ||
| 73 | + puts " ERROR: Project already exists #{project_name}" | ||
| 74 | + return false | ||
| 75 | + project = Project.find_by_code(project_name) | ||
| 76 | + else | ||
| 77 | + project = Project.create( | ||
| 78 | + name: project_name, | ||
| 79 | + code: project_name, | ||
| 80 | + path: project_name, | ||
| 81 | + owner: user, | ||
| 82 | + description: "Automatically created from Rake on #{Time.now.to_s}" | ||
| 83 | + ) | ||
| 84 | + end | ||
| 85 | + | ||
| 86 | + unless project.valid? | ||
| 87 | + puts " ERROR: Failed to create project #{project} because #{project.errors.first}" | ||
| 88 | + return false | ||
| 89 | + end | ||
| 71 | 90 | ||
| 72 | # Add user as admin for project | 91 | # Add user as admin for project |
| 73 | project.users_projects.create!( | 92 | project.users_projects.create!( |
| @@ -82,7 +101,7 @@ def create_repo_project(project_name, user_email) | @@ -82,7 +101,7 @@ def create_repo_project(project_name, user_email) | ||
| 82 | if project.valid? | 101 | if project.valid? |
| 83 | true | 102 | true |
| 84 | else | 103 | else |
| 85 | - puts " ERROR: Failed to create project #{project} because #{project.errors}" | 104 | + puts " ERROR: Failed to create project #{project} because #{project.errors.first}" |
| 86 | false | 105 | false |
| 87 | end | 106 | end |
| 88 | end | 107 | end |