上一篇文章提到,Gitea 是替代 Gitlab 的一个好选择,那么如果已经有了 Gitlab,如何迁移到 Gitea 呢?风险最低的方案可能是让用户自行迁移,但问题是迁移会比较慢,会有遗漏,并且会丢失 PR,Issue。另外可以找一些迁移工具。但是目前应该还没有支持完全迁移的工具。本文介绍使用 gitlab_to_gitea 迁移的过程。
迁移准备
- 迁移工具: https://github.com/h44z/gitlab_to_gitea
- 限制:需要 gitlab api 版本为 v4 ,gitlab 9 以上才支持,低版本应先升级。我安装的版本为 8.6.4
- 升级 gitlab ,参考:
https://blog.csdn.net/zhoumh1988/article/details/82849783
Gitlab 的 yum 源
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
迁移工具的功能和限制:
This script support migrating the following data:
- Repositories & Wiki (fork status is lost)
- Milestones
- Labels
- Issues (no comments)
- Users (no profile pictures)
- Groups
- Public SSH keys
迁移过程
非默认配置,可能会丢数据,因此最好找台新机器,搭建一个和待升级版本一致的全新的gitlab
,不更改任何配置,然后升级到新版(又或许是因为centos 6.6的某些问题?centos 7.5上没问题 | 全新搭建gitlab验证应该是系统版本问题 | 可以在本地虚拟机7.5系统上升级到9.0.0之后备份一下,然后在6.6系统上新搭 9.0.0,恢复备份即可)
- 升级到 8.17.8. 需要执行
chmod -R 2770 /var/opt/gitlab/git-data
然后gitlab-ctl reconfigure
- 升级到 9.0.0,之后就有 v4 api了
然后就是使用迁移工具执行迁移,需要注意以下几点:
- 需要
python 3.6
或以上版本 pygitea
需要安装作者定制的支持json
参数的版本pip install git+https://github.com/h44z/pygitea
- 需要配置
gitlab
管理员用户 - 脚本似乎是通过 远程仓库 迁移的,需要
gitlab
搭建在gitea
可以访问到的地方,不能用本地虚拟机。 - 存在的问题:迁移后的仓库都变成私有库了
附录
gitlab 常用命令
gitlab-rake gitlab:backup:create
gitlab-rake gitlab:backup:restore BACKUP=备份版本号
gitlab-rake db:migrate:status
参考资料
1. https://github.com/h44z/gitlab_to_gitea
发表回复