如何在由API触发的回购导入到GitLab中包括GitHub问题和PR?

时间:2018-08-11 15:36:09

标签: github gitlab backup remote-backup github-organizations

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

为了自动将前者完全备份到后者,他们可能想要运行某种脚本来触发其GitLab从其GitHub组织导入所有存储库。通过带有github_importerdocu)的GUI可以实现。对于许多存储库,手动和连续地操作是不可行的。

使用GitLab的Create projectImport file API,我困惑了这个(Bash)代码,该代码从给定的GitHub存储库创建GitLab项目:

static/view-fr.json

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/ 是GitHub上的源组织,而ORG是GitLab CE实例上的专用GROUP_ID组。

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

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

谢谢您对以上问题的任何提示,或对现有解决方案/工具/脚本的指导,无论使用哪种语言。谢谢!

PS:是的,与GitLab's built-in Repository mirroring相比,上述脚本会过分杀伤力,但这不包括问题,PR和标签。

1 个答案:

答案 0 :(得分:0)

截至2018年8月,4.似乎是唯一的答案。实施GitLab CI issue 34848时,它可能成为1.的选项。