许多学术组织在GitHub上存在,但也可能拥有自托管的GitLab CE实例。
为了将前者自动完全备份到后者,他们可能希望运行某种脚本来触发其GitLab从其GitHub组织导入所有存储库。这可以通过
使用GitLab的
为了将前者自动完全备份到后者,他们可能希望运行某种脚本来触发其GitLab从其GitHub组织导入所有存储库。这可以通过
github_importer
(docu)的GUI实现。对于许多存储库而言,手动和持续进行此操作是不可行的。使用GitLab的
Create project
和Import file
API,我拼凑出了这个(Bash)代码,它可以从给定的GitHub存储库创建GitLab项目:
curl --request POST
--header "PRIVATE-TOKEN: $API_SCOPE" \
--form "namespace_id=$GROUP_ID" \
--form "path=$REPO" \
--form "import_url=https://github.com/$ORG/$REPO \
https://git.domain.edu/api/v4/projects/
ORG
是 GitHub 上的源组织,GROUP_ID
是 GitLab CE 实例上专门的 GitHub-archive
组。
然而,这仅导入文件和 Git 历史记录,而不包括 GitHub 问题、PR、标签等。但这些都是完整备份所需的。因此,我想知道:
- 这个任务是否有第三方API端点与之相关?
/projects/import
似乎需要一个file
属性,但试图先从GitHub读取文件列表可能会很快耗尽API限制,不适合作为可行的备选方案。 - 还有另一个
--form ""
标志可以添加到/projects
请求中,使其像github_importer
一样运行吗? - 后者是否可能有一个未记录的API?
- 是否需要使用
gitlab-rake import:github[…]
?
感谢任何关于上述问题的提示,或指向现有解决方案/工具/脚本的指针,无论使用什么语言。谢谢!
PS:是的,与GitLab内置的仓库镜像
相比,上述脚本可能过于复杂,但也不能包括问题、PR和标签。