diff --git a/app/models/merge_request_diff.rb b/app/models/merge_request_diff.rb index 33884118595cd39ea9c9340bea090a657daf5972..03daac2822c4954fce57f05672b80d6b99cc0a13 100644 --- a/app/models/merge_request_diff.rb +++ b/app/models/merge_request_diff.rb @@ -37,7 +37,9 @@ class MergeRequestDiff < ActiveRecord::Base serialize :st_commits serialize :st_diffs - after_create :reload_content + after_create :reload_content, unless: :importing + + attr_accessor :importing def reload_content reload_commits diff --git a/app/services/projects/import_export/project_tree_restorer.rb b/app/services/projects/import_export/project_tree_restorer.rb index 9512fcb2a1ab796848945329cf1e5eddc2b76cd6..c498d7bd9bc36875adf25aba6b1de126421dd967 100644 --- a/app/services/projects/import_export/project_tree_restorer.rb +++ b/app/services/projects/import_export/project_tree_restorer.rb @@ -71,9 +71,10 @@ module Projects # TODO refactor this relation_key = relation.keys.first tree_hash[relation_key.to_s].each do |relation_item| - relation.values.each do |sub_relation| + relation.values.flatten.each do |sub_relation| relation_hash = relation_item[sub_relation.to_s] next if relation_hash.blank? + relation_hash.merge!('project_id' => project.id) if sub_relation == :merge_requests sub_relation_object = Projects::ImportExport::RelationFactory.create( relation_sym: sub_relation, relation_hash: relation_hash, members_map: members_map) relation_item[sub_relation.to_s] = sub_relation_object diff --git a/app/services/projects/import_export/relation_factory.rb b/app/services/projects/import_export/relation_factory.rb index 6ccaa409ce97928e1f929c83383329722baf0931..4f1c753ac69a16a01a92a8d32fbf548d14b3942e 100644 --- a/app/services/projects/import_export/relation_factory.rb +++ b/app/services/projects/import_export/relation_factory.rb @@ -7,12 +7,14 @@ module Projects USER_REFERENCES = %w(author_id assignee_id updated_by_id).freeze def create(relation_sym:, relation_hash:, members_map:) + #TODO refactor this relation_sym = parse_relation_sym(relation_sym) klass = relation_class(relation_sym) relation_hash.delete('id') #screw IDs for now handle_merge_requests(relation_hash) if relation_sym == :merge_requests update_user_references(relation_hash, members_map) - klass.new(relation_hash) + imported_object = klass.new(relation_hash) + imported_object.importing = true if imported_object.respond_to?(:importing) end private @@ -20,7 +22,6 @@ module Projects def handle_merge_requests(relation_hash) relation_hash['target_project_id'] = relation_hash.delete('project_id') relation_hash['source_project_id'] = -1 - relation_hash['importing'] = true end #TODO nice to have, optimize this to only get called for specific models