diff options
author | Douwe Maan <douwe@gitlab.com> | 2019-01-15 19:22:46 +0300 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2019-01-15 19:22:46 +0300 |
commit | ace4a88aa34f704a96775751bc69656408c23700 (patch) | |
tree | 1cd238aadadb491e81963364d98b4fa9eec5f0b8 /lib/gitlab | |
parent | f821a53b45d4b521ffb734b3b843f48e0d1ecfcd (diff) | |
parent | 83767dd0b3d6fd477f6b08659737a29e2644343e (diff) |
Merge branch 'sh-fix-backfill-project-repo-migration' into 'master'
Fix duplicate project disk path in BackfillLegacyProjectRepositories
Closes #56061
See merge request gitlab-org/gitlab-ce!24213
Diffstat (limited to 'lib/gitlab')
-rw-r--r-- | lib/gitlab/background_migration/backfill_project_repositories.rb | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/lib/gitlab/background_migration/backfill_project_repositories.rb b/lib/gitlab/background_migration/backfill_project_repositories.rb index aaf520d70f6..c8d83cc1803 100644 --- a/lib/gitlab/background_migration/backfill_project_repositories.rb +++ b/lib/gitlab/background_migration/backfill_project_repositories.rb @@ -83,7 +83,7 @@ module Gitlab extend ActiveSupport::Concern def full_path - @full_path ||= build_full_path + route&.path || build_full_path end def build_full_path @@ -99,7 +99,12 @@ module Gitlab end end - # Namespace model. + # Route model + class Route < ActiveRecord::Base + belongs_to :source, inverse_of: :route, polymorphic: true + end + + # Namespace model class Namespace < ActiveRecord::Base self.table_name = 'namespaces' self.inheritance_column = nil @@ -108,6 +113,8 @@ module Gitlab belongs_to :parent, class_name: 'Namespace', inverse_of: 'namespaces' + has_one :route, -> { where(source_type: 'Namespace') }, inverse_of: :source, foreign_key: :source_id + has_many :projects, inverse_of: :parent has_many :namespaces, inverse_of: :parent end @@ -134,6 +141,7 @@ module Gitlab belongs_to :parent, class_name: 'Namespace', foreign_key: :namespace_id, inverse_of: 'projects' + has_one :route, -> { where(source_type: 'Project') }, inverse_of: :source, foreign_key: :source_id has_one :project_repository, inverse_of: :project delegate :disk_path, to: :storage @@ -194,6 +202,8 @@ module Gitlab def project_repositories(start_id, stop_id) projects .without_project_repository + .includes(:route, parent: [:route]).references(:routes) + .includes(:parent).references(:namespaces) .where(id: start_id..stop_id) .map { |project| build_attributes_for_project(project) } .compact |