Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bitbucket/representation/pull_request.rb59
-rw-r--r--lib/gitlab/bitbucket_import/importer.rb31
2 files changed, 90 insertions, 0 deletions
diff --git a/lib/bitbucket/representation/pull_request.rb b/lib/bitbucket/representation/pull_request.rb
index 7cbad91e9c8..e7b1f99e9a6 100644
--- a/lib/bitbucket/representation/pull_request.rb
+++ b/lib/bitbucket/representation/pull_request.rb
@@ -1,6 +1,65 @@
module Bitbucket
module Representation
class PullRequest < Representation::Base
+ def author
+ raw.fetch('author', {}).fetch('username', 'Anonymous')
+ end
+
+ def description
+ raw['description']
+ end
+
+ def iid
+ raw['id']
+ end
+
+ def state
+ if raw['state'] == 'MERGED'
+ 'merged'
+ elsif raw['state'] == 'DECLINED'
+ 'closed'
+ else
+ 'opened'
+ end
+ end
+
+ def created_at
+ raw['created_on']
+ end
+
+ def updated_at
+ raw['updated_on']
+ end
+
+ def title
+ raw['title']
+ end
+
+ def source_branch_name
+ source_branch.dig('branch', 'name')
+ end
+
+ def source_branch_sha
+ source_branch.dig('commit', 'hash')
+ end
+
+ def target_branch_name
+ target_branch.dig('branch', 'name')
+ end
+
+ def target_branch_sha
+ target_branch.dig('commit', 'hash')
+ end
+
+ private
+
+ def source_branch
+ raw['source']
+ end
+
+ def target_branch
+ raw['destination']
+ end
end
end
end
diff --git a/lib/gitlab/bitbucket_import/importer.rb b/lib/gitlab/bitbucket_import/importer.rb
index 67e906431f0..0060e350249 100644
--- a/lib/gitlab/bitbucket_import/importer.rb
+++ b/lib/gitlab/bitbucket_import/importer.rb
@@ -11,6 +11,7 @@ module Gitlab
def execute
import_issues
+ import_pull_requests
true
end
@@ -72,6 +73,36 @@ module Gitlab
rescue ActiveRecord::RecordInvalid
nil
end
+
+ def import_pull_requests
+ pull_requests = client.pull_requests(repo)
+
+ pull_requests.each do |pull_request|
+ begin
+ description = @formatter.author_line(pull_request.author)
+ description += pull_request.description
+
+ project.merge_requests.create(
+ iid: pull_request.iid,
+ title: pull_request.title,
+ description: description,
+ source_project: project,
+ source_branch: pull_request.source_branch_name,
+ source_branch_sha: pull_request.source_branch_sha,
+ target_project: project,
+ target_branch: pull_request.target_branch_name,
+ target_branch_sha: pull_request.target_branch_sha,
+ state: pull_request.state,
+ author_id: gl_user_id(project, pull_request.author),
+ assignee_id: nil,
+ created_at: pull_request.created_at,
+ updated_at: pull_request.updated_at
+ )
+ rescue ActiveRecord::RecordInvalid
+ nil
+ end
+ end
+ end
end
end
end