从Gogs迁移项目至GitLab

我以前使用的代码托管系统是Gogs,近期我切换到了更知名的代码托管系统GitLab。因此,我需要将原来托管在Gogs实例上的项目迁移到GitLab实例。

GitLab中提供了一些迁移工具,其支持的平台如下图:

其中,Gitea是Gogs的一个分支版本,我试着通过Gitea选项从Gogs导入项目,虽然GitLab能够正常列出Gogs上的项目列表,但是在导入时则会引发500错误。

经阅读文档得知,Gogs和GitLab均提供了操作代码仓库的API。因此,我可以编写一个Python脚本来迁移项目。

实现

源代码:https://github.com/nyanim/migrate-gogs-to-gitlab

获取Gogs上的仓库列表

官方文档: docs-api/Repositories at master · gogs/docs-api

在Gogs上使用GET /user/repos接口即可获得当前已认证用户(通过个人操作令牌认证)有权读取的所有仓库信息。其中我们需要的字段是

  • full_name:形如user/repo的仓库全名
  • description:仓库描述
  • clone_url:HTTPS的仓库url

导入仓库至GitLab

官方文档: Projects API | GitLab

在GitLab上使用POST /projects即可创建新仓库。我们需要传入如下的参数:

使用

修改sample.py,填入Gogs及GitLab实例的URL,操作令牌及第30行的Gogs域名,并运行sample.py即可。

Show CommentsClose Comments

2 Comments

  • antior
    Posted 2019 年 3 月 13 日 at 上午 11:05 0Likes
    Vivaldi 2.3.1440.41 Vivaldi 2.3.1440.41 Windows 10 x64 Edition Windows 10 x64 Edition

    博主的字体有点大啊,我还以为我放大了网页。。。

    • Frank
      Posted 2019 年 3 月 13 日 at 下午 12:11 0Likes
      Google Chrome 72.0.3626.121 Google Chrome 72.0.3626.121 macOS   10.14.3 macOS 10.14.3

      我之前确实把字体调大了10%。

Leave a comment