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

Commitb48563f

Browse files
authored
Merge pull request#1283 from fajpunk/import_bitbucket
feat: import from bitbucket server
2 parents3935baf +ff3013a commitb48563f

File tree

2 files changed

+129
-3
lines changed

2 files changed

+129
-3
lines changed

‎gitlab/tests/objects/test_projects.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99

1010

1111
project_content= {"name":"name","id":1}
12+
import_content= {
13+
"id":1,
14+
"name":"project",
15+
"import_status":"scheduled",
16+
}
1217

1318

1419
@pytest.fixture
@@ -37,6 +42,19 @@ def resp_list_projects():
3742
yieldrsps
3843

3944

45+
@pytest.fixture
46+
defresp_import_bitbucket_server():
47+
withresponses.RequestsMock()asrsps:
48+
rsps.add(
49+
method=responses.POST,
50+
url="http://localhost/api/v4/import/bitbucket_server",
51+
json=import_content,
52+
content_type="application/json",
53+
status=201,
54+
)
55+
yieldrsps
56+
57+
4058
deftest_get_project(gl,resp_get_project):
4159
data=gl.projects.get(1)
4260
assertisinstance(data,Project)
@@ -50,6 +68,21 @@ def test_list_projects(gl, resp_list_projects):
5068
assertprojects[0].name=="name"
5169

5270

71+
deftest_import_bitbucket_server(gl,resp_import_bitbucket_server):
72+
res=gl.projects.import_bitbucket_server(
73+
bitbucket_server_project="project",
74+
bitbucket_server_repo="repo",
75+
bitbucket_server_url="url",
76+
bitbucket_server_username="username",
77+
personal_access_token="token",
78+
new_name="new_name",
79+
target_namespace="namespace",
80+
)
81+
assertres["id"]==1
82+
assertres["name"]=="project"
83+
assertres["import_status"]=="scheduled"
84+
85+
5386
@pytest.mark.skip(reason="missing test")
5487
deftest_list_user_projects(gl):
5588
pass
@@ -223,3 +256,8 @@ def test_project_pull_mirror(gl):
223256
@pytest.mark.skip(reason="missing test")
224257
deftest_project_snapshot(gl):
225258
pass
259+
260+
261+
@pytest.mark.skip(reason="missing test")
262+
deftest_import_github(gl):
263+
pass

‎gitlab/v4/objects/__init__.py

Lines changed: 91 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5501,6 +5501,94 @@ def import_project(
55015501
"/projects/import",post_data=data,files=files,**kwargs
55025502
)
55035503

5504+
defimport_bitbucket_server(
5505+
self,
5506+
bitbucket_server_url,
5507+
bitbucket_server_username,
5508+
personal_access_token,
5509+
bitbucket_server_project,
5510+
bitbucket_server_repo,
5511+
new_name=None,
5512+
target_namespace=None,
5513+
**kwargs
5514+
):
5515+
"""Import a project from BitBucket Server to Gitlab (schedule the import)
5516+
5517+
This method will return when an import operation has been safely queued,
5518+
or an error has occurred. After triggering an import, check the
5519+
`import_status` of the newly created project to detect when the import
5520+
operation has completed.
5521+
5522+
NOTE: this request may take longer than most other API requests.
5523+
So this method will specify a 60 second default timeout if none is specified.
5524+
A timeout can be specified via kwargs to override this functionality.
5525+
5526+
Args:
5527+
bitbucket_server_url (str): Bitbucket Server URL
5528+
bitbucket_server_username (str): Bitbucket Server Username
5529+
personal_access_token (str): Bitbucket Server personal access
5530+
token/password
5531+
bitbucket_server_project (str): Bitbucket Project Key
5532+
bitbucket_server_repo (str): Bitbucket Repository Name
5533+
new_name (str): New repository name (Optional)
5534+
target_namespace (str): Namespace to import repository into.
5535+
Supports subgroups like /namespace/subgroup (Optional)
5536+
**kwargs: Extra options to send to the server (e.g. sudo)
5537+
5538+
Raises:
5539+
GitlabAuthenticationError: If authentication is not correct
5540+
GitlabListError: If the server failed to perform the request
5541+
5542+
Returns:
5543+
dict: A representation of the import status.
5544+
5545+
Example:
5546+
```
5547+
gl = gitlab.Gitlab_from_config()
5548+
print("Triggering import")
5549+
result = gl.projects.import_bitbucket_server(
5550+
bitbucket_server_url="https://some.server.url",
5551+
bitbucket_server_username="some_bitbucket_user",
5552+
personal_access_token="my_password_or_access_token",
5553+
bitbucket_server_project="my_project",
5554+
bitbucket_server_repo="my_repo",
5555+
new_name="gl_project_name",
5556+
target_namespace="gl_project_path"
5557+
)
5558+
project = gl.projects.get(ret['id'])
5559+
print("Waiting for import to complete")
5560+
while project.import_status == u'started':
5561+
time.sleep(1.0)
5562+
project = gl.projects.get(project.id)
5563+
print("BitBucket import complete")
5564+
```
5565+
"""
5566+
data= {
5567+
"bitbucket_server_url":bitbucket_server_url,
5568+
"bitbucket_server_username":bitbucket_server_username,
5569+
"personal_access_token":personal_access_token,
5570+
"bitbucket_server_project":bitbucket_server_project,
5571+
"bitbucket_server_repo":bitbucket_server_repo,
5572+
}
5573+
ifnew_name:
5574+
data["new_name"]=new_name
5575+
iftarget_namespace:
5576+
data["target_namespace"]=target_namespace
5577+
if (
5578+
"timeout"notinkwargs
5579+
orself.gitlab.timeoutisNone
5580+
orself.gitlab.timeout<60.0
5581+
):
5582+
# Ensure that this HTTP request has a longer-than-usual default timeout
5583+
# The base gitlab object tends to have a default that is <10 seconds,
5584+
# and this is too short for this API command, typically.
5585+
# On the order of 24 seconds has been measured on a typical gitlab instance.
5586+
kwargs["timeout"]=60.0
5587+
result=self.gitlab.http_post(
5588+
"/import/bitbucket_server",post_data=data,**kwargs
5589+
)
5590+
returnresult
5591+
55045592
defimport_github(
55055593
self,personal_access_token,repo_id,target_namespace,new_name=None,**kwargs
55065594
):
@@ -5532,16 +5620,16 @@ def import_github(
55325620
Example:
55335621
```
55345622
gl = gitlab.Gitlab_from_config()
5535-
print"Triggering import"
5623+
print("Triggering import")
55365624
result = gl.projects.import_github(ACCESS_TOKEN,
55375625
123456,
55385626
"my-group/my-subgroup")
55395627
project = gl.projects.get(ret['id'])
5540-
print"Waiting for import to complete"
5628+
print("Waiting for import to complete")
55415629
while project.import_status == u'started':
55425630
time.sleep(1.0)
55435631
project = gl.projects.get(project.id)
5544-
print"Github import complete"
5632+
print("Github import complete")
55455633
```
55465634
"""
55475635
data= {

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp