Skip to content
Snippets Groups Projects
Commit 3fd3e1fc authored by Jeremy Mack's avatar Jeremy Mack
Browse files

Added detection and handling of exsiting repos

parent 60fee48e
Branches
Tags
No related merge requests found
Loading
@@ -20,21 +20,28 @@ task :import_projects, [:email] => :environment do |t, args|
Loading
@@ -20,21 +20,28 @@ task :import_projects, [:email] => :environment do |t, args|
clone_path = "#{REPOSITORY_DIRECTORY}/#{repo_name}.git" clone_path = "#{REPOSITORY_DIRECTORY}/#{repo_name}.git"
   
if Dir.exists? clone_path if Dir.exists? clone_path
puts " INFO: #{clone_path} already exists in repositories directory, skipping." if Project.find_by_code(repo_name)
skipped_count += 1 puts " INFO: #{clone_path} already exists in repositories directory, skipping."
next skipped_count += 1
else next
if clone_bare_repo_as_git(repo_full_path, clone_path)
if create_repo_project(repo_name, user_email)
imported_count += 1
else
failed_count += 1
end
else else
puts " INFO: Project doesn't exist for #{repo_name} (but the repo does)."
end
else
# Clone the repo
unless clone_bare_repo_as_git(repo_full_path, clone_path)
failed_count += 1 failed_count += 1
next
end end
end end
   
# Create the project and repo
if create_repo_project(repo_name, user_email)
imported_count += 1
else
failed_count += 1
end
end end
   
puts "Finished importing #{imported_count} projects (skipped #{skipped_count}, failed #{failed_count})." puts "Finished importing #{imported_count} projects (skipped #{skipped_count}, failed #{failed_count})."
Loading
@@ -61,13 +68,25 @@ def create_repo_project(project_name, user_email)
Loading
@@ -61,13 +68,25 @@ def create_repo_project(project_name, user_email)
puts " INFO: Project #{project_name} already exists in Gitlab, skipping." puts " INFO: Project #{project_name} already exists in Gitlab, skipping."
false false
else else
project = Project.create( project = nil
name: project_name, if Project.find_by_code(project_name)
code: project_name, puts " ERROR: Project already exists #{project_name}"
path: project_name, return false
owner: user, project = Project.find_by_code(project_name)
description: "Automatically created from Rake on #{Time.now.to_s}" else
) project = Project.create(
name: project_name,
code: project_name,
path: project_name,
owner: user,
description: "Automatically created from Rake on #{Time.now.to_s}"
)
end
unless project.valid?
puts " ERROR: Failed to create project #{project} because #{project.errors.first}"
return false
end
   
# Add user as admin for project # Add user as admin for project
project.users_projects.create!( project.users_projects.create!(
Loading
@@ -82,7 +101,7 @@ def create_repo_project(project_name, user_email)
Loading
@@ -82,7 +101,7 @@ def create_repo_project(project_name, user_email)
if project.valid? if project.valid?
true true
else else
puts " ERROR: Failed to create project #{project} because #{project.errors}" puts " ERROR: Failed to create project #{project} because #{project.errors.first}"
false false
end end
end end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment