Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

feat: import from bitbucket server#1283

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
nejch merged 1 commit intopython-gitlab:masterfromfajpunk:import_bitbucket
Feb 5, 2021
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletionsgitlab/tests/objects/test_projects.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,6 +9,11 @@


project_content = {"name": "name", "id": 1}
import_content = {
"id": 1,
"name": "project",
"import_status": "scheduled",
}


@pytest.fixture
Expand DownExpand Up@@ -37,6 +42,19 @@ def resp_list_projects():
yield rsps


@pytest.fixture
def resp_import_bitbucket_server():
with responses.RequestsMock() as rsps:
rsps.add(
method=responses.POST,
url="http://localhost/api/v4/import/bitbucket_server",
json=import_content,
content_type="application/json",
status=201,
)
yield rsps


def test_get_project(gl, resp_get_project):
data = gl.projects.get(1)
assert isinstance(data, Project)
Expand All@@ -50,6 +68,21 @@ def test_list_projects(gl, resp_list_projects):
assert projects[0].name == "name"


def test_import_bitbucket_server(gl, resp_import_bitbucket_server):
res = gl.projects.import_bitbucket_server(
bitbucket_server_project="project",
bitbucket_server_repo="repo",
bitbucket_server_url="url",
bitbucket_server_username="username",
personal_access_token="token",
new_name="new_name",
target_namespace="namespace",
)
assert res["id"] == 1
assert res["name"] == "project"
assert res["import_status"] == "scheduled"


@pytest.mark.skip(reason="missing test")
def test_list_user_projects(gl):
pass
Expand DownExpand Up@@ -223,3 +256,8 @@ def test_project_pull_mirror(gl):
@pytest.mark.skip(reason="missing test")
def test_project_snapshot(gl):
pass


@pytest.mark.skip(reason="missing test")
def test_import_github(gl):
pass
94 changes: 91 additions & 3 deletionsgitlab/v4/objects/__init__.py
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -5501,6 +5501,94 @@ def import_project(
"/projects/import", post_data=data, files=files, **kwargs
)

def import_bitbucket_server(
self,
bitbucket_server_url,
bitbucket_server_username,
personal_access_token,
bitbucket_server_project,
bitbucket_server_repo,
new_name=None,
target_namespace=None,
**kwargs
):
"""Import a project from BitBucket Server to Gitlab (schedule the import)

This method will return when an import operation has been safely queued,
or an error has occurred. After triggering an import, check the
`import_status` of the newly created project to detect when the import
operation has completed.

NOTE: this request may take longer than most other API requests.
So this method will specify a 60 second default timeout if none is specified.
A timeout can be specified via kwargs to override this functionality.

Args:
bitbucket_server_url (str): Bitbucket Server URL
bitbucket_server_username (str): Bitbucket Server Username
personal_access_token (str): Bitbucket Server personal access
token/password
bitbucket_server_project (str): Bitbucket Project Key
bitbucket_server_repo (str): Bitbucket Repository Name
new_name (str): New repository name (Optional)
target_namespace (str): Namespace to import repository into.
Supports subgroups like /namespace/subgroup (Optional)
**kwargs: Extra options to send to the server (e.g. sudo)

Raises:
GitlabAuthenticationError: If authentication is not correct
GitlabListError: If the server failed to perform the request

Returns:
dict: A representation of the import status.

Example:
```
gl = gitlab.Gitlab_from_config()
print("Triggering import")
result = gl.projects.import_bitbucket_server(
bitbucket_server_url="https://some.server.url",
bitbucket_server_username="some_bitbucket_user",
personal_access_token="my_password_or_access_token",
bitbucket_server_project="my_project",
bitbucket_server_repo="my_repo",
new_name="gl_project_name",
target_namespace="gl_project_path"
)
project = gl.projects.get(ret['id'])
print("Waiting for import to complete")
while project.import_status == u'started':
time.sleep(1.0)
project = gl.projects.get(project.id)
print("BitBucket import complete")
```
"""
data = {
"bitbucket_server_url": bitbucket_server_url,
"bitbucket_server_username": bitbucket_server_username,
"personal_access_token": personal_access_token,
"bitbucket_server_project": bitbucket_server_project,
"bitbucket_server_repo": bitbucket_server_repo,
}
if new_name:
data["new_name"] = new_name
if target_namespace:
data["target_namespace"] = target_namespace
if (
"timeout" not in kwargs
or self.gitlab.timeout is None
or self.gitlab.timeout < 60.0
):
# Ensure that this HTTP request has a longer-than-usual default timeout
# The base gitlab object tends to have a default that is <10 seconds,
# and this is too short for this API command, typically.
# On the order of 24 seconds has been measured on a typical gitlab instance.
kwargs["timeout"] = 60.0
result = self.gitlab.http_post(
"/import/bitbucket_server", post_data=data, **kwargs
)
return result

def import_github(
self, personal_access_token, repo_id, target_namespace, new_name=None, **kwargs
):
Expand DownExpand Up@@ -5532,16 +5620,16 @@ def import_github(
Example:
```
gl = gitlab.Gitlab_from_config()
print"Triggering import"
print("Triggering import")
result = gl.projects.import_github(ACCESS_TOKEN,
123456,
"my-group/my-subgroup")
project = gl.projects.get(ret['id'])
print"Waiting for import to complete"
print("Waiting for import to complete")
while project.import_status == u'started':
time.sleep(1.0)
project = gl.projects.get(project.id)
print"Github import complete"
print("Github import complete")
```
"""
data = {
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp