如何通过GitLab API将任意公共Git仓库导入自托管GitLab服务
GitLab API 无SSH导入公共Git仓库方案
错误原因
你此前调用的是项目导出接口,功能为将GitLab内已存在的ID为1的项目打包导出,与外部仓库导入需求完全不匹配,因此不会生成新的导入仓库。
正确实现方法
前置要求
- 个人访问令牌已勾选
api权限,且对目标命名空间拥有项目创建权限 - 待导入源仓库为公开可访问的HTTP/HTTPS地址
导入执行命令
调用POST /api/v4/projects接口实现导入,示例如下:
curl --request POST \ --header "PRIVATE-TOKEN: $personal_access_token" \ --header "Content-Type: application/json" \ --data '{ "name": "自定义仓库名称", "path": "自定义仓库访问路径", "namespace_id": "目标命名空间ID", "import_url": "http://www.somegit.com/somegituser/somegitrepository.git", "visibility": "private" }' \ "http://127.0.0.1/api/v4/projects"
参数说明:
name:导入后在GitLab展示的仓库名称path:仓库URL的访问后缀,通常与名称保持一致即可namespace_id:要导入到的分组/个人空间ID,个人空间可在用户设置页查看自身用户IDimport_url:待导入的外部公共Git仓库地址visibility:仓库可见性,可选值为private/internal/public
导入进度查询
接口调用成功后,可通过以下命令查看导入状态,返回值中import_status为finished即代表导入完成:
curl --header "PRIVATE-TOKEN: $personal_access_token" "http://127.0.0.1/api/v4/projects/替换为导入接口返回的项目ID/import"
内容的提问来源于stack exchange,提问作者a.t.
相关产品推荐
相关产品推荐

