Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Tatuya Kamada
gitlab-ce
Commits
5b0ebbe5
Commit
5b0ebbe5
authored
Dec 19, 2016
by
Valery Sizov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Wiki import to BB importer
parent
2c49c1af
Changes
9
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
88 additions
and
6 deletions
+88
-6
doc/integration/bitbucket.md
doc/integration/bitbucket.md
+2
-1
doc/integration/img/bitbucket_oauth_settings_page.png
doc/integration/img/bitbucket_oauth_settings_page.png
+0
-0
doc/workflow/importing/import_projects_from_bitbucket.md
doc/workflow/importing/import_projects_from_bitbucket.md
+1
-0
lib/bitbucket/representation/repo.rb
lib/bitbucket/representation/repo.rb
+4
-0
lib/gitlab/bitbucket_import/importer.rb
lib/gitlab/bitbucket_import/importer.rb
+13
-0
lib/gitlab/bitbucket_import/project_creator.rb
lib/gitlab/bitbucket_import/project_creator.rb
+8
-1
spec/lib/bitbucket/representation/repo_spec.rb
spec/lib/bitbucket/representation/repo_spec.rb
+49
-0
spec/lib/gitlab/bitbucket_import/importer_spec.rb
spec/lib/gitlab/bitbucket_import/importer_spec.rb
+9
-3
spec/lib/gitlab/bitbucket_import/project_creator_spec.rb
spec/lib/gitlab/bitbucket_import/project_creator_spec.rb
+2
-1
No files found.
doc/integration/bitbucket.md
View file @
5b0ebbe5
...
@@ -5,7 +5,7 @@ Bitbucket.org account.
...
@@ -5,7 +5,7 @@ Bitbucket.org account.
## Overview
## Overview
You can set up Bitbucket.org as an OAuth provider so that you can use your
You can set up Bitbucket.org as an OAuth
2
provider so that you can use your
credentials to authenticate into GitLab or import your projects from
credentials to authenticate into GitLab or import your projects from
Bitbucket.org.
Bitbucket.org.
...
@@ -50,6 +50,7 @@ you to use.
...
@@ -50,6 +50,7 @@ you to use.
Repositories: Read
Repositories: Read
Pull Requests: Read
Pull Requests: Read
Issues: Read
Issues: Read
Wiki: Read and Write
```
```
![Bitbucket OAuth settings page](img/bitbucket_oauth_settings_page.png)
![Bitbucket OAuth settings page](img/bitbucket_oauth_settings_page.png)
...
...
doc/integration/img/bitbucket_oauth_settings_page.png
View replaced file @
2c49c1af
View file @
5b0ebbe5
5.48 KB
|
W:
|
H:
28 KB
|
W:
|
H:
2-up
Swipe
Onion skin
doc/workflow/importing/import_projects_from_bitbucket.md
View file @
5b0ebbe5
...
@@ -17,6 +17,7 @@ to enable this if not already.
...
@@ -17,6 +17,7 @@ to enable this if not already.
-
the pull requests (GitLab 8.4+)
-
the pull requests (GitLab 8.4+)
-
the pull request comments (GitLab 8.15+)
-
the pull request comments (GitLab 8.15+)
-
the milestones (GitLab 8.15+)
-
the milestones (GitLab 8.15+)
-
the wiki (GitLab 8.15+)
-
References to pull requests and issues are preserved (GitLab 8.7+)
-
References to pull requests and issues are preserved (GitLab 8.7+)
-
Repository public access is retained. If a repository is private in Bitbucket
-
Repository public access is retained. If a repository is private in Bitbucket
it will be created as private in GitLab as well.
it will be created as private in GitLab as well.
...
...
lib/bitbucket/representation/repo.rb
View file @
5b0ebbe5
...
@@ -51,6 +51,10 @@ module Bitbucket
...
@@ -51,6 +51,10 @@ module Bitbucket
raw
[
'scm'
]
==
'git'
raw
[
'scm'
]
==
'git'
end
end
def
has_wiki?
raw
[
'has_wiki'
]
end
def
visibility_level
def
visibility_level
if
raw
[
'is_private'
]
if
raw
[
'is_private'
]
Gitlab
::
VisibilityLevel
::
PRIVATE
Gitlab
::
VisibilityLevel
::
PRIVATE
...
...
lib/gitlab/bitbucket_import/importer.rb
View file @
5b0ebbe5
module
Gitlab
module
Gitlab
module
BitbucketImport
module
BitbucketImport
class
Importer
class
Importer
include
Gitlab
::
ShellAdapter
LABELS
=
[{
title:
'bug'
,
color:
'#FF0000'
},
LABELS
=
[{
title:
'bug'
,
color:
'#FF0000'
},
{
title:
'enhancement'
,
color:
'#428BCA'
},
{
title:
'enhancement'
,
color:
'#428BCA'
},
{
title:
'proposal'
,
color:
'#69D100'
},
{
title:
'proposal'
,
color:
'#69D100'
},
...
@@ -18,6 +20,7 @@ module Gitlab
...
@@ -18,6 +20,7 @@ module Gitlab
end
end
def
execute
def
execute
import_wiki
import_issues
import_issues
import_pull_requests
import_pull_requests
handle_errors
handle_errors
...
@@ -55,6 +58,16 @@ module Gitlab
...
@@ -55,6 +58,16 @@ module Gitlab
@repo
||=
client
.
repo
(
project
.
import_source
)
@repo
||=
client
.
repo
(
project
.
import_source
)
end
end
def
import_wiki
return
if
project
.
wiki
.
repository_exists?
path_with_namespace
=
"
#{
project
.
path_with_namespace
}
.wiki"
import_url
=
project
.
import_url
.
sub
(
/\.git\z/
,
".git/wiki"
)
gitlab_shell
.
import_repository
(
project
.
repository_storage_path
,
path_with_namespace
,
import_url
)
rescue
StandardError
=>
e
errors
<<
{
type: :wiki
,
errors:
e
.
message
}
end
def
import_issues
def
import_issues
return
unless
repo
.
issues_enabled?
return
unless
repo
.
issues_enabled?
...
...
lib/gitlab/bitbucket_import/project_creator.rb
View file @
5b0ebbe5
...
@@ -22,9 +22,16 @@ module Gitlab
...
@@ -22,9 +22,16 @@ module Gitlab
import_type:
'bitbucket'
,
import_type:
'bitbucket'
,
import_source:
repo
.
full_name
,
import_source:
repo
.
full_name
,
import_url:
repo
.
clone_url
(
session_data
[
:token
]),
import_url:
repo
.
clone_url
(
session_data
[
:token
]),
import_data:
{
credentials:
session_data
}
import_data:
{
credentials:
session_data
},
skip_wiki:
skip_wiki
).
execute
).
execute
end
end
private
def
skip_wiki
repo
.
has_wiki?
end
end
end
end
end
end
end
spec/lib/bitbucket/representation/repo_spec.rb
0 → 100644
View file @
5b0ebbe5
require
'spec_helper'
describe
Bitbucket
::
Representation
::
Repo
do
describe
'#has_wiki?'
do
it
{
expect
(
described_class
.
new
({
'has_wiki'
=>
false
}).
has_wiki?
).
to
be_falsey
}
it
{
expect
(
described_class
.
new
({
'has_wiki'
=>
true
}).
has_wiki?
).
to
be_truthy
}
end
describe
'#name'
do
it
{
expect
(
described_class
.
new
({
'name'
=>
'test'
}).
name
).
to
eq
(
'test'
)
}
end
describe
'#valid?'
do
it
{
expect
(
described_class
.
new
({
'scm'
=>
'hg'
}).
valid?
).
to
be_falsey
}
it
{
expect
(
described_class
.
new
({
'scm'
=>
'git'
}).
valid?
).
to
be_truthy
}
end
describe
'#full_name'
do
it
{
expect
(
described_class
.
new
({
'full_name'
=>
'test_full'
}).
full_name
).
to
eq
(
'test_full'
)
}
end
describe
'#description'
do
it
{
expect
(
described_class
.
new
({
'description'
=>
'desc'
}).
description
).
to
eq
(
'desc'
)
}
end
describe
'#issues_enabled?'
do
it
{
expect
(
described_class
.
new
({
'has_issues'
=>
false
}).
issues_enabled?
).
to
be_falsey
}
it
{
expect
(
described_class
.
new
({
'has_issues'
=>
true
}).
issues_enabled?
).
to
be_truthy
}
end
describe
'#owner_and_slug'
do
it
{
expect
(
described_class
.
new
({
'full_name'
=>
'ben/test'
}).
owner_and_slug
).
to
eq
([
'ben'
,
'test'
])
}
end
describe
'#owner'
do
it
{
expect
(
described_class
.
new
({
'full_name'
=>
'ben/test'
}).
owner
).
to
eq
(
'ben'
)
}
end
describe
'#slug'
do
it
{
expect
(
described_class
.
new
({
'full_name'
=>
'ben/test'
}).
slug
).
to
eq
(
'test'
)
}
end
describe
'#clone_url'
do
it
'builds url'
do
data
=
{
'links'
=>
{
'clone'
=>
[
{
'name'
=>
'https'
,
'href'
=>
'https://bibucket.org/test/test.git'
}]
}
}
expect
(
described_class
.
new
(
data
).
clone_url
(
'abc'
)).
to
eq
(
'https://x-token-auth:abc@bibucket.org/test/test.git'
)
end
end
end
spec/lib/gitlab/bitbucket_import/importer_spec.rb
View file @
5b0ebbe5
...
@@ -69,6 +69,9 @@ describe Gitlab::BitbucketImport::Importer, lib: true do
...
@@ -69,6 +69,9 @@ describe Gitlab::BitbucketImport::Importer, lib: true do
context
'issues statuses'
do
context
'issues statuses'
do
before
do
before
do
# HACK: Bitbucket::Representation.const_get('Issue') seems to return ::Issue without this
Bitbucket
::
Representation
::
Issue
.
new
({})
stub_request
(
stub_request
(
:get
,
:get
,
"https://api.bitbucket.org/2.0/repositories/
#{
project_identifier
}
"
"https://api.bitbucket.org/2.0/repositories/
#{
project_identifier
}
"
...
@@ -108,13 +111,16 @@ describe Gitlab::BitbucketImport::Importer, lib: true do
...
@@ -108,13 +111,16 @@ describe Gitlab::BitbucketImport::Importer, lib: true do
body:
{}.
to_json
)
body:
{}.
to_json
)
end
end
it
'map statuses to open or closed'
do
it
'maps statuses to open or closed'
do
# HACK: Bitbucket::Representation.const_get('Issue') seems to return ::Issue without this
Bitbucket
::
Representation
::
Issue
.
new
({})
importer
.
execute
importer
.
execute
expect
(
project
.
issues
.
where
(
state:
"closed"
).
size
).
to
eq
(
5
)
expect
(
project
.
issues
.
where
(
state:
"closed"
).
size
).
to
eq
(
5
)
expect
(
project
.
issues
.
where
(
state:
"opened"
).
size
).
to
eq
(
2
)
expect
(
project
.
issues
.
where
(
state:
"opened"
).
size
).
to
eq
(
2
)
end
end
it
'calls import_wiki'
do
expect
(
importer
).
to
receive
(
:import_wiki
)
importer
.
execute
end
end
end
end
end
spec/lib/gitlab/bitbucket_import/project_creator_spec.rb
View file @
5b0ebbe5
...
@@ -11,7 +11,8 @@ describe Gitlab::BitbucketImport::ProjectCreator, lib: true do
...
@@ -11,7 +11,8 @@ describe Gitlab::BitbucketImport::ProjectCreator, lib: true do
owner:
"asd"
,
owner:
"asd"
,
full_name:
'Vim repo'
,
full_name:
'Vim repo'
,
visibility_level:
Gitlab
::
VisibilityLevel
::
PRIVATE
,
visibility_level:
Gitlab
::
VisibilityLevel
::
PRIVATE
,
clone_url:
'ssh://git@bitbucket.org/asd/vim.git'
)
clone_url:
'ssh://git@bitbucket.org/asd/vim.git'
,
has_wiki?:
false
)
end
end
let
(
:namespace
){
create
(
:group
,
owner:
user
)
}
let
(
:namespace
){
create
(
:group
,
owner:
user
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment