Skip to content
Snippets Groups Projects
Commit 95f1fe72 authored by Douglas Barbosa Alexandre's avatar Douglas Barbosa Alexandre
Browse files

Import GitHub Pull Requests into GitLab

parent 8de1f715
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -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|
Loading
Loading
@@ -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 || ""
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(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
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
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment