Import GitHub Pull Requests into GitLab
This commit is contained in:
parent
8de1f7159c
commit
95f1fe724a
1 changed files with 57 additions and 7 deletions
|
@ -12,7 +12,16 @@ module Gitlab
|
|||
end
|
||||
|
||||
def execute
|
||||
#Issues && Comments
|
||||
import_issues
|
||||
import_pull_requests
|
||||
|
||||
true
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def import_issues
|
||||
# Issues && Comments
|
||||
client.list_issues(project.import_source, state: :all,
|
||||
sort: :created,
|
||||
direction: :asc).each do |issue|
|
||||
|
@ -33,18 +42,59 @@ module Gitlab
|
|||
description: body,
|
||||
title: issue.title,
|
||||
state: issue.state == 'closed' ? 'closed' : 'opened',
|
||||
author_id: gl_user_id(project, issue.user.id)
|
||||
author_id: gl_author_id(project, issue.user.id)
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def import_pull_requests
|
||||
client.pull_requests(project.import_source, state: :all,
|
||||
sort: :created,
|
||||
direction: :asc).each do |pull_request|
|
||||
body = @formatter.author_line(pull_request.user.login)
|
||||
body += pull_request.body || ""
|
||||
|
||||
def gl_user_id(project, github_id)
|
||||
user = User.joins(:identities).
|
||||
find_by("identities.extern_uid = ? AND identities.provider = 'github'", github_id.to_s)
|
||||
(user && user.id) || project.creator_id
|
||||
source_branch = pull_request.head.ref
|
||||
target_branch = pull_request.base.ref
|
||||
|
||||
merge_request = MergeRequest.create!(
|
||||
title: pull_request.title,
|
||||
description: body,
|
||||
source_project: project,
|
||||
source_branch: source_branch,
|
||||
target_project: project,
|
||||
target_branch: target_branch,
|
||||
state: merge_request_state(pull_request),
|
||||
author_id: gl_author_id(project, pull_request.user.id),
|
||||
assignee_id: gl_user_id(pull_request.assignee.try(:id)),
|
||||
created_at: pull_request.created_at,
|
||||
updated_at: pull_request.updated_at
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def merge_request_state(pull_request)
|
||||
case true
|
||||
when pull_request.state == 'closed' && pull_request.merged_at.present?
|
||||
'merged'
|
||||
when pull_request.state == 'closed'
|
||||
'closed'
|
||||
else
|
||||
'opened'
|
||||
end
|
||||
end
|
||||
|
||||
def gl_author_id(project, github_id)
|
||||
gl_user_id(github_id) || project.creator_id
|
||||
end
|
||||
|
||||
def gl_user_id(github_id)
|
||||
if github_id
|
||||
User.joins(:identities).
|
||||
find_by("identities.extern_uid = ? AND identities.provider = 'github'", github_id.to_s).
|
||||
try(:id)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue