Import all GitHub comments after importing issues and PRs
This commit is contained in:
parent
dbcbbf262b
commit
e30bfb809a
2 changed files with 18 additions and 13 deletions
|
@ -24,6 +24,7 @@ module Gitlab
|
|||
import_milestones
|
||||
import_issues
|
||||
import_pull_requests
|
||||
import_comments
|
||||
import_wiki
|
||||
import_releases
|
||||
handle_errors
|
||||
|
@ -80,7 +81,6 @@ module Gitlab
|
|||
begin
|
||||
issue = gh_issue.create!
|
||||
apply_labels(issue, raw)
|
||||
import_comments(issue) if gh_issue.has_comments?
|
||||
rescue => e
|
||||
errors << { type: :issue, url: Gitlab::UrlSanitizer.sanitize(raw.url), errors: e.message }
|
||||
end
|
||||
|
@ -101,8 +101,6 @@ module Gitlab
|
|||
|
||||
merge_request = pull_request.create!
|
||||
apply_labels(merge_request, raw)
|
||||
import_comments(merge_request)
|
||||
import_comments_on_diff(merge_request)
|
||||
rescue => e
|
||||
errors << { type: :pull_request, url: Gitlab::UrlSanitizer.sanitize(pull_request.url), errors: e.message }
|
||||
ensure
|
||||
|
@ -143,21 +141,26 @@ module Gitlab
|
|||
end
|
||||
end
|
||||
|
||||
def import_comments(issuable)
|
||||
comments = client.issue_comments(repo, issuable.iid, per_page: 100)
|
||||
create_comments(issuable, comments)
|
||||
def import_comments
|
||||
client.issues_comments(repo, per_page: 100) do |comments|
|
||||
create_comments(comments, :issue)
|
||||
end
|
||||
|
||||
client.pull_requests_comments(repo, per_page: 100) do |comments|
|
||||
create_comments(comments, :pull_request)
|
||||
end
|
||||
end
|
||||
|
||||
def import_comments_on_diff(merge_request)
|
||||
comments = client.pull_request_comments(repo, merge_request.iid, per_page: 100)
|
||||
create_comments(merge_request, comments)
|
||||
end
|
||||
|
||||
def create_comments(issuable, comments)
|
||||
def create_comments(comments, issuable_type)
|
||||
ActiveRecord::Base.no_touching do
|
||||
comments.each do |raw|
|
||||
begin
|
||||
comment = CommentFormatter.new(project, raw)
|
||||
comment = CommentFormatter.new(project, raw)
|
||||
issuable_class = issuable_type == :issue ? Issue : MergeRequest
|
||||
iid = raw.send("#{issuable_type}_url").split('/').last # GH doesn't return parent ID directly
|
||||
issuable = issuable_class.find_by_iid(iid)
|
||||
next unless issuable
|
||||
|
||||
issuable.notes.create!(comment.attributes)
|
||||
rescue => e
|
||||
errors << { type: :comment, url: Gitlab::UrlSanitizer.sanitize(raw.url), errors: e.message }
|
||||
|
|
|
@ -132,6 +132,8 @@ describe Gitlab::GithubImport::Importer, lib: true do
|
|||
allow_any_instance_of(Octokit::Client).to receive(:milestones).and_return([milestone, milestone])
|
||||
allow_any_instance_of(Octokit::Client).to receive(:issues).and_return([issue1, issue2])
|
||||
allow_any_instance_of(Octokit::Client).to receive(:pull_requests).and_return([pull_request, pull_request])
|
||||
allow_any_instance_of(Octokit::Client).to receive(:issues_comments).and_return([])
|
||||
allow_any_instance_of(Octokit::Client).to receive(:pull_requests_comments).and_return([])
|
||||
allow_any_instance_of(Octokit::Client).to receive(:last_response).and_return(double(rels: { next: nil }))
|
||||
allow_any_instance_of(Octokit::Client).to receive(:releases).and_return([release1, release2])
|
||||
allow_any_instance_of(Gitlab::Shell).to receive(:import_repository).and_raise(Gitlab::Shell::Error)
|
||||
|
|
Loading…
Reference in a new issue