summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2016-04-14 12:03:45 +0200
committerJames Lopez <james@jameslopez.es>2016-04-14 12:03:45 +0200
commitefff7e9e54e1d1ebbb36dc8dca35b894aeab2630 (patch)
tree4e38bb4911cde30e7c8b2763c4959b8a26f698ea
parentfb63173df2bf81c155ed311d2c8fc5889a5faf1d (diff)
downloadgitlab-ce-efff7e9e54e1d1ebbb36dc8dca35b894aeab2630.tar.gz
updated migration based on testing findings
-rw-r--r--db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb19
-rw-r--r--lib/gitlab/import_url.rb2
2 files changed, 14 insertions, 7 deletions
diff --git a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
index b97b79f920d..8a351cf27a3 100644
--- a/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
+++ b/db/migrate/20160302152808_remove_wrong_import_url_from_projects.rb
@@ -23,10 +23,14 @@ class RemoveWrongImportUrlFromProjects < ActiveRecord::Migration
def process_projects_with_wrong_url
projects_with_wrong_import_url.each do |project|
- import_url = Gitlab::ImportUrl.new(project["import_url"])
+ begin
+ import_url = Gitlab::ImportUrl.new(project["import_url"])
- update_import_url(import_url, project)
- update_import_data(import_url, project)
+ update_import_url(import_url, project)
+ update_import_data(import_url, project)
+ rescue URI::InvalidURIError
+ nullify_import_url(project)
+ end
end
end
@@ -82,6 +86,10 @@ class RemoveWrongImportUrlFromProjects < ActiveRecord::Migration
execute("UPDATE projects SET import_url = #{quote(import_url.sanitized_url)} WHERE id = #{project['id']}")
end
+ def nullify_import_url(project)
+ execute("UPDATE projects SET import_url = NULL WHERE id = #{project['id']}")
+ end
+
def insert_import_data_sql(project_id, fake_import_data)
%(
INSERT INTO project_import_data
@@ -108,14 +116,13 @@ class RemoveWrongImportUrlFromProjects < ActiveRecord::Migration
end
#GitHub projects with token, and any user:password@ based URL
- #TODO: may need to add import_type != list
def projects_with_wrong_import_url
- select_all("SELECT p.id, p.import_url, i.id as import_data_id FROM projects p LEFT JOIN project_import_data i on p.id = i.project_id WHERE p.import_url IS NOT NULL AND p.import_url LIKE '%//%@%'")
+ select_all("SELECT p.id, p.import_url, i.id as import_data_id FROM projects p LEFT JOIN project_import_data i on p.id = i.project_id WHERE p.import_url <> '' AND p.import_url LIKE '%//%@%'")
end
# All imports with data for import_type
def unencrypted_import_data(import_type: )
- select_all("SELECT i.id, p.import_url, i.data FROM projects p INNER JOIN project_import_data i ON p.id = i.project_id WHERE p.import_url IS NOT NULL AND p.import_type = '#{import_type}' ")
+ select_all("SELECT i.id, p.import_url, i.data FROM projects p INNER JOIN project_import_data i ON p.id = i.project_id WHERE p.import_url <> '' AND p.import_type = '#{import_type}' ")
end
def quote(value)
diff --git a/lib/gitlab/import_url.rb b/lib/gitlab/import_url.rb
index 3cfbc17b89b..d23b013c1f5 100644
--- a/lib/gitlab/import_url.rb
+++ b/lib/gitlab/import_url.rb
@@ -1,7 +1,7 @@
module Gitlab
class ImportUrl
def initialize(url, credentials: nil)
- @url = URI.parse(url)
+ @url = URI.parse(URI.encode(url))
@credentials = credentials
end