Skip to content
从Gogs迁移项目至GitLab的脚本
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
providers
.gitignore
README.md
sample.py

README.md

从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即可。

You can’t perform that action at this time.