上一篇文章提到,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 源
1 2 3 4 5 |
[gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1 |
迁移工具的功能和限制:
1 2 3 4 5 6 7 8 9 |
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 常用命令
1 2 3 |
gitlab-rake gitlab:backup:create gitlab-rake gitlab:backup:restore BACKUP=备份版本号 gitlab-rake db:migrate:status |
参考资料
1 |
1. https://github.com/h44z/gitlab_to_gitea |
发表回复