diff --git a/lib/gitlab/bitbucket_server_import/importer.rb b/lib/gitlab/bitbucket_server_import/importer.rb index fcf75dc493b..33bd1aeb127 100644 --- a/lib/gitlab/bitbucket_server_import/importer.rb +++ b/lib/gitlab/bitbucket_server_import/importer.rb @@ -135,20 +135,35 @@ module Gitlab end inline_comments.each do |comment| - begin - attributes = pull_request_comment_attributes(comment) + parent = build_diff_note(merge_request, comment, line_code_map) + + next unless parent&.persisted? + + comment.comments.each do |reply| + attributes = pull_request_comment_attributes(reply) attributes.merge!( position: build_position(merge_request, comment), - line_code: line_code_map.fetch(comment.id), + line_code: line_code_map.fetch(reply.id) + discussion_id: parent.discussion_id, type: 'DiffNote') - merge_request.notes.create!(attributes) - rescue StandardError => e - errors << { type: :pull_request, id: comment.id, errors: e.message } end end end + def build_diff_note(merge_request, comment, line_code_map) + attributes = pull_request_comment_attributes(comment) + attributes.merge!( + position: build_position(merge_request, comment), + line_code: line_code_map.fetch(comment.id), + type: 'DiffNote') + + merge_request.notes.create!(attributes) + rescue StandardError => e + errors << { type: :pull_request, id: comment.id, errors: e.message } + nil + end + def build_position(merge_request, pr_comment) params = { diff_refs: merge_request.diff_refs,