From fb9bd552c95883ed142111c9988f57fd2b531876 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Mon, 21 Aug 2017 16:35:31 +0200 Subject: [PATCH 1/4] Fix fork MRs importing issue --- lib/gitlab/import_export/import_export.yml | 2 ++ lib/gitlab/import_export/merge_request_parser.rb | 2 +- spec/lib/gitlab/import_export/project.json | 5 ++++- .../gitlab/import_export/project_tree_restorer_spec.rb | 4 ++++ .../gitlab/import_export/project_tree_saver_spec.rb | 10 ++++++++++ 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml index 9d9ebcb389a..9e08a5a8fb9 100644 --- a/lib/gitlab/import_export/import_export.yml +++ b/lib/gitlab/import_export/import_export.yml @@ -133,5 +133,7 @@ methods: - :utf8_diff merge_requests: - :diff_head_sha + - :source_branch_sha + - :target_branch_sha project: - :description_html diff --git a/lib/gitlab/import_export/merge_request_parser.rb b/lib/gitlab/import_export/merge_request_parser.rb index c20adc20bfd..81a213e8321 100644 --- a/lib/gitlab/import_export/merge_request_parser.rb +++ b/lib/gitlab/import_export/merge_request_parser.rb @@ -30,7 +30,7 @@ module Gitlab end def branch_exists?(branch_name) - @project.repository.branch_exists?(branch_name) + @project.repository.raw.branch_exists?(branch_name) end def fork_merge_request? diff --git a/spec/lib/gitlab/import_export/project.json b/spec/lib/gitlab/import_export/project.json index 4e631e13410..331b7cf2fea 100644 --- a/spec/lib/gitlab/import_export/project.json +++ b/spec/lib/gitlab/import_export/project.json @@ -2522,7 +2522,7 @@ "id": 27, "target_branch": "feature", "source_branch": "feature_conflict", - "source_project_id": 5, + "source_project_id": 999, "author_id": 1, "assignee_id": null, "title": "MR1", @@ -2536,6 +2536,9 @@ "position": 0, "updated_by_id": null, "merge_error": null, + "diff_head_sha": "HEAD", + "source_branch_sha": "ABCD", + "target_branch_sha": "DCBA", "merge_params": { "force_remove_source_branch": null }, diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb index 956f1d56eb4..2e986827640 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb @@ -10,6 +10,10 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do @shared = Gitlab::ImportExport::Shared.new(relative_path: "", project_path: 'path') allow(@shared).to receive(:export_path).and_return('spec/lib/gitlab/import_export/') @project = create(:project, :builds_disabled, :issues_disabled, name: 'project', path: 'project') + + allow(@project.repository).to receive(:fetch_ref).and_return(true) + expect(@project.repository).to receive(:create_branch).with('feature', 'DCBA') + project_tree_restorer = described_class.new(user: @user, shared: @shared, project: @project) @restored_project_json = project_tree_restorer.restore end diff --git a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb index a278f89c1a1..065b0ec6658 100644 --- a/spec/lib/gitlab/import_export/project_tree_saver_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_saver_spec.rb @@ -11,6 +11,8 @@ describe Gitlab::ImportExport::ProjectTreeSaver do before do project.team << [user, :master] allow_any_instance_of(Gitlab::ImportExport).to receive(:storage_path).and_return(export_path) + allow_any_instance_of(MergeRequest).to receive(:source_branch_sha).and_return('ABCD') + allow_any_instance_of(MergeRequest).to receive(:target_branch_sha).and_return('DCBA') end after do @@ -43,6 +45,14 @@ describe Gitlab::ImportExport::ProjectTreeSaver do expect(saved_project_json['merge_requests'].first['milestone']).not_to be_empty end + it 'has merge request\'s source branch SHA' do + expect(saved_project_json['merge_requests'].first['source_branch_sha']).to eq('ABCD') + end + + it 'has merge request\'s target branch SHA' do + expect(saved_project_json['merge_requests'].first['target_branch_sha']).to eq('DCBA') + end + it 'has events' do expect(saved_project_json['merge_requests'].first['milestone']['events']).not_to be_empty end From 0fe2029040d2c3fcd3e19322591a568f14794ec9 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Mon, 21 Aug 2017 16:42:11 +0200 Subject: [PATCH 2/4] add changelog --- changelogs/unreleased/fix-import-fork-mr.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 changelogs/unreleased/fix-import-fork-mr.yml diff --git a/changelogs/unreleased/fix-import-fork-mr.yml b/changelogs/unreleased/fix-import-fork-mr.yml new file mode 100644 index 00000000000..4e9cf7faae8 --- /dev/null +++ b/changelogs/unreleased/fix-import-fork-mr.yml @@ -0,0 +1,5 @@ +--- +title: Fix Import/Export issue to do with fork merge requests +merge_request: +author: +type: fixed From ac53067b6467c0cec9e224b3e0aec0efdab84b00 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Tue, 22 Aug 2017 08:59:01 +0200 Subject: [PATCH 3/4] fix specs --- .../lib/gitlab/import_export/project_tree_restorer_spec.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb index 2e986827640..b06d4a8d8e3 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb @@ -12,10 +12,15 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do @project = create(:project, :builds_disabled, :issues_disabled, name: 'project', path: 'project') allow(@project.repository).to receive(:fetch_ref).and_return(true) - expect(@project.repository).to receive(:create_branch).with('feature', 'DCBA') + allow(@project.repository.raw).to receive(:rugged_branch_exists?).and_return(false) + + expect_any_instance_of(Gitlab::Git::Repository).to receive(:create_branch).with('feature', 'DCBA') + allow_any_instance_of(Gitlab::Git::Repository).to receive(:create_branch) project_tree_restorer = described_class.new(user: @user, shared: @shared, project: @project) @restored_project_json = project_tree_restorer.restore + + end end From e163c83b48b73ca6a29e62bacbc782147388d571 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Tue, 22 Aug 2017 09:42:24 +0200 Subject: [PATCH 4/4] fix static analysis --- spec/lib/gitlab/import_export/project_tree_restorer_spec.rb | 2 -- 1 file changed, 2 deletions(-) diff --git a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb index b06d4a8d8e3..c10427d798f 100644 --- a/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb +++ b/spec/lib/gitlab/import_export/project_tree_restorer_spec.rb @@ -19,8 +19,6 @@ describe Gitlab::ImportExport::ProjectTreeRestorer do project_tree_restorer = described_class.new(user: @user, shared: @shared, project: @project) @restored_project_json = project_tree_restorer.restore - - end end