fix MR source project assignment
This commit is contained in:
parent
551ffc0a4d
commit
f8e8547980
4 changed files with 34 additions and 9 deletions
|
@ -82,6 +82,7 @@ v 8.11.0 (unreleased)
|
|||
- Adds support for pending invitation project members importing projects
|
||||
- Update devise initializer to turn on changed password notification emails. !5648 (tombell)
|
||||
- Avoid to show the original password field when password is automatically set. !5712 (duduribeiro)
|
||||
- Fix importing GitLab projects with an invalid MR source project
|
||||
|
||||
v 8.10.5 (unreleased)
|
||||
|
||||
|
|
|
@ -102,17 +102,19 @@ module Gitlab
|
|||
def update_project_references
|
||||
project_id = @relation_hash.delete('project_id')
|
||||
|
||||
# If source and target are the same, populate them with the new project ID.
|
||||
if @relation_hash['source_project_id']
|
||||
@relation_hash['source_project_id'] = same_source_and_target? ? project_id : -1
|
||||
end
|
||||
|
||||
# project_id may not be part of the export, but we always need to populate it if required.
|
||||
@relation_hash['project_id'] = project_id
|
||||
@relation_hash['gl_project_id'] = project_id if @relation_hash['gl_project_id']
|
||||
@relation_hash['target_project_id'] = project_id if @relation_hash['target_project_id']
|
||||
@relation_hash['source_project_id'] = -1 if @relation_hash['source_project_id']
|
||||
end
|
||||
|
||||
# If source and target are the same, populate them with the new project ID.
|
||||
if @relation_hash['source_project_id'] && @relation_hash['target_project_id'] &&
|
||||
@relation_hash['target_project_id'] == @relation_hash['source_project_id']
|
||||
@relation_hash['source_project_id'] = project_id
|
||||
end
|
||||
def same_source_and_target?
|
||||
@relation_hash['target_project_id'] && @relation_hash['target_project_id'] == @relation_hash['source_project_id']
|
||||
end
|
||||
|
||||
def reset_ci_tokens
|
||||
|
|
|
@ -2393,7 +2393,7 @@
|
|||
"source_project_id": 5,
|
||||
"author_id": 1,
|
||||
"assignee_id": null,
|
||||
"title": "Cannot be automatically merged",
|
||||
"title": "MR1",
|
||||
"created_at": "2016-06-14T15:02:36.568Z",
|
||||
"updated_at": "2016-06-14T15:02:56.815Z",
|
||||
"state": "opened",
|
||||
|
@ -2827,10 +2827,10 @@
|
|||
"id": 26,
|
||||
"target_branch": "master",
|
||||
"source_branch": "feature",
|
||||
"source_project_id": 5,
|
||||
"source_project_id": 4,
|
||||
"author_id": 1,
|
||||
"assignee_id": null,
|
||||
"title": "Can be automatically merged",
|
||||
"title": "MR2",
|
||||
"created_at": "2016-06-14T15:02:36.418Z",
|
||||
"updated_at": "2016-06-14T15:02:57.013Z",
|
||||
"state": "opened",
|
||||
|
|
|
@ -71,6 +71,28 @@ describe Gitlab::ImportExport::ProjectTreeRestorer, services: true do
|
|||
|
||||
expect(Milestone.find_by_description('test milestone').issues).not_to be_empty
|
||||
end
|
||||
|
||||
context 'Merge requests' do
|
||||
before do
|
||||
restored_project_json
|
||||
end
|
||||
|
||||
it 'always has the new project as a target' do
|
||||
expect(MergeRequest.find_by_title('MR1').target_project).to eq(project)
|
||||
end
|
||||
|
||||
it 'has the same source project as originally if source/target are the same' do
|
||||
expect(MergeRequest.find_by_title('MR1').source_project).to eq(project)
|
||||
end
|
||||
|
||||
it 'has the new project as target if source/target differ' do
|
||||
expect(MergeRequest.find_by_title('MR2').target_project).to eq(project)
|
||||
end
|
||||
|
||||
it 'has no source if source/target differ' do
|
||||
expect(MergeRequest.find_by_title('MR2').source_project_id).to eq(-1)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue