diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2018-05-31 15:08:50 +0000 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2018-05-31 15:08:50 +0000 |
commit | 68ef6ae2dacd60d20723cf453838034dcec14bf7 (patch) | |
tree | dee9a0e2addfe86f8789e9eecf79906f0e46daed /lib/gitlab | |
parent | 915e56340361bbdd0ed448ef935f05253ed365a9 (diff) | |
parent | db926729660d66098db717ae9f64fab0cd2f601f (diff) | |
download | gitlab-ce-68ef6ae2dacd60d20723cf453838034dcec14bf7.tar.gz |
Merge branch '41587-osw-mr-metrics-migration-take-two' into 'master'
Take two for MR metrics population background migration
See merge request gitlab-org/gitlab-ce!19097
Diffstat (limited to 'lib/gitlab')
-rw-r--r-- | lib/gitlab/import_export/import_export.yml | 1 | ||||
-rw-r--r-- | lib/gitlab/import_export/relation_factory.rb | 14 |
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml index 36c7534cd7a..da3667faf7a 100644 --- a/lib/gitlab/import_export/import_export.yml +++ b/lib/gitlab/import_export/import_export.yml @@ -28,6 +28,7 @@ project_tree: - project_members: - :user - merge_requests: + - :metrics - notes: - :author - events: diff --git a/lib/gitlab/import_export/relation_factory.rb b/lib/gitlab/import_export/relation_factory.rb index b736b2c3fe5..c5cf290f191 100644 --- a/lib/gitlab/import_export/relation_factory.rb +++ b/lib/gitlab/import_export/relation_factory.rb @@ -18,9 +18,10 @@ module Gitlab label: :project_label, custom_attributes: 'ProjectCustomAttribute', project_badges: 'Badge', + metrics: 'MergeRequest::Metrics', ci_cd_settings: 'ProjectCiCdSetting' }.freeze - USER_REFERENCES = %w[author_id assignee_id updated_by_id user_id created_by_id last_edited_by_id merge_user_id resolved_by_id closed_by_id].freeze + USER_REFERENCES = %w[author_id assignee_id updated_by_id merged_by_id latest_closed_by_id user_id created_by_id last_edited_by_id merge_user_id resolved_by_id closed_by_id].freeze PROJECT_REFERENCES = %w[project_id source_project_id target_project_id].freeze @@ -36,6 +37,15 @@ module Gitlab new(*args).create end + def self.relation_class(relation_name) + # There are scenarios where the model is pluralized (e.g. + # MergeRequest::Metrics), and we don't want to force it to singular + # with #classify. + relation_name.to_s.classify.constantize + rescue NameError + relation_name.to_s.constantize + end + def initialize(relation_sym:, relation_hash:, members_mapper:, user:, project:, excluded_keys: []) @relation_name = OVERRIDES[relation_sym] || relation_sym @relation_hash = relation_hash.except('noteable_id') @@ -195,7 +205,7 @@ module Gitlab end def relation_class - @relation_class ||= @relation_name.to_s.classify.constantize + @relation_class ||= self.class.relation_class(@relation_name) end def imported_object |