3

许多学术组织都存在于 GitHub 上,但也可能有一个自托管的 GitLab CE 实例。

为了自动将前者完全备份到后者,他们可能想要运行某种脚本来触发他们的 GitLab 从他们的 GitHub org 导入所有 repos。这可以通过带有github_importer( docu ) 的 GUI 来实现。对于许多 repos 来说,手动和连续是不可行的。

使用 GitLabCreate projectImport fileAPI,我将这段 (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 上的源组织和GitLab CE 实例上GROUP_ID的专用组。GitHub-archive

但是,这只会导入文件和 Git 历史记录,而不是 GitHub 问题、PR、标签等,但这些都是完整备份所需要的。所以,我想知道:

  1. 是否有与此任务相关的第三个 API 端点?/projects/import似乎需要一个file属性,但尝试首先从 GitHub 读取文件列表,对于可行的备份解决方案而言,可能会过快耗尽 API 限制。
  2. 是否有另一个 --form ""标志可以添加到/projects请求中,使其表现得像github_importer
  3. 后者是否可能有未记录的 API?
  4. 需要用gitlab-rake import:github[…]吗?

感谢您对上述问题的任何提示,或指向现有解决方案/工具/脚本的指针,无论语言如何。谢谢!

PS:是的,与GitLab 的内置Repository mirroring脚本相比,上面的脚本有点过头了,但这也不包括问题、PR 和标签。

4

1 回答 1

0

截至 2018 年 8 月,4.这似乎是唯一的答案。一旦GitLab 自己的“导入存储库 API 端点”问题得到实施,它可能会成为1..

于 2018-08-17T14:13:27.497 回答