使用 API 将 Git 存储库导入 Git 实验室?
Import Git repository into GitLab using API?
在研究如何通过 GitLab API 将 Git 存储库导入 GitLab 时,我的搜索结果似乎被以下方法污染了使用 ssh 将 GitHub 存储库镜像到 GitLab。我正在尝试执行 CLI/Bash 等价于: http://127.0.0.1/projects/new#import_project 在自托管 GitLab 服务器上,然后输入:
http://www.somegit.com/somegituser/somegitrepository.git
,如下图:
curl --request POST --header "PRIVATE-TOKEN: $personal_access_token" "http://127.0.0.1/api/v4/projects/1/export" \
--data "upload[http_method]=PUT" \
--data-urlencode "upload[url]=http://www.somegit.com/someuser/somegithubrepository.git"
哪个returns:
{"message":"202 Accepted"}(base)
但是,存储库不会出现在 GitLab 服务器中。因此,我想知道:如何使用导入方法和 GitLab API(GitLab 不使用 ssh)?
有两种处理方法:
- 遥控器是 GitHub 或 Bitbucket
- 任何其他遥控器
GitHub 或 Bitbucket
您正在寻找的是 Import API
(https://docs.gitlab.com/ee/api/import.html#import-repository-from-github) 至少对于 GitHub 和 Bitbucket 服务器有自己的请求,例如:
curl --request POST \
--url "https://gitlab.example.com/api/v4/import/github" \
--header "content-type: application/json" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data '{
"personal_access_token": "aBc123abC12aBc123abC12abC123+_A/c123",
"repo_id": "12345",
"target_namespace": "group/subgroup",
"new_name": "NEW-NAME",
"github_hostname": "https://github.example.com"
}'
任何其他 git
如果远程不是 GitHub 或 Bitbucket 服务器,我只能想到一种方法:
curl --request POST \
--url "https://gitlab.example.com/api/v4/import/github" \
--header "content-type: application/json" \
--header "PRIVATE-TOKEN: <your_access_token>" \
--data '{ "path":"<path>", "name": "<name>" }'
- 使用该请求的 ID 响应创建拉镜像,例如:https://docs.gitlab.com/ee/api/remote_mirrors.html#create-a-pull-mirror
curl --request POST --data "url=https://username:token@example.com/gitlab/example.git" \
--header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/<ID>/remote_mirrors"
注意远程拉取镜像api不支持SSH认证,所以如果需要提供认证,需要使用https。