From 3a131383b68dcb14abd9d31a2a462ffa57841095 Mon Sep 17 00:00:00 2001
From: James Lopez <james@jameslopez.es>
Date: Mon, 14 Mar 2016 10:35:41 +0100
Subject: [PATCH] fixed MR issue and refactored some stuff

---
 app/models/merge_request.rb                         |  2 +-
 .../projects/import_export/members_mapper.rb        |  8 ++------
 .../projects/import_export/relation_factory.rb      | 13 +++++++------
 3 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 714d55323d4..de6189b2dc8 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -125,7 +125,7 @@ class MergeRequest < ActiveRecord::Base
     end
   end
 
-  validates :source_project, presence: true, unless: :allow_broken
+  validates :source_project, presence: true, unless: [:allow_broken, :importing]
   validates :source_branch, presence: true
   validates :target_project, presence: true
   validates :target_branch, presence: true
diff --git a/app/services/projects/import_export/members_mapper.rb b/app/services/projects/import_export/members_mapper.rb
index 8d47422b10c..6d49d901bf3 100644
--- a/app/services/projects/import_export/members_mapper.rb
+++ b/app/services/projects/import_export/members_mapper.rb
@@ -13,12 +13,6 @@ module Projects
       end
 
       def map
-        @project_member_map ||= project_member_map
-      end
-
-      private
-
-      def project_member_map
         @project_member_map = Hash.new(default_project_member)
         @exported_members.each do |member|
           existing_user = User.where(find_project_user_query(member)).first
@@ -27,6 +21,8 @@ module Projects
         @project_member_map
       end
 
+      private
+
       def assign_member(existing_user, member)
         old_user_id = member['user']['id']
         member['user'] = existing_user
diff --git a/app/services/projects/import_export/relation_factory.rb b/app/services/projects/import_export/relation_factory.rb
index 1b9bd234a43..6ccaa409ce9 100644
--- a/app/services/projects/import_export/relation_factory.rb
+++ b/app/services/projects/import_export/relation_factory.rb
@@ -10,18 +10,19 @@ module Projects
         relation_sym = parse_relation_sym(relation_sym)
         klass = relation_class(relation_sym)
         relation_hash.delete('id') #screw IDs for now
-        #TODO refactor this...
-        if relation_sym == :merge_requests
-          relation_hash['target_project_id'] = relation_hash.delete('project_id')
-          relation_hash['source_project_id'] = -1
-          relation_hash['importing'] = true
-        end
+        handle_merge_requests(relation_hash) if relation_sym == :merge_requests
         update_user_references(relation_hash, members_map)
         klass.new(relation_hash)
       end
 
       private
 
+      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
       def update_user_references(relation_hash, members_map)
         USER_REFERENCES.each do |reference|
-- 
GitLab