从 gogs 迁移到 gitea

官方支持文档:https://docs.gitea.io/zh-cn/upgrade-from-gogs/

0、一开始因为 gogs 很轻量,部署很方便选择了它,但是因为最近 gogs 已经有段时间不更新了,使用过程中发现很多想要功能都没有,用起来很不方便。最近发现还有 gitea 这么个项目,是 gogs 的分支,更新一直很活跃,并且还支持从 gogs 迁移,所以准备更换一下。但我使用的 gogs 版本:0.11.86.0130,并不是官方支持的迁移版本,所以迁移过程似乎有些曲折。

1、写此文章时,最新的 gitea 版本为 1.12.1,该版本似乎以及不支持从 gogs 迁移了,迁移需要先使用旧版本(好像要:1.6.4,不过似乎只要是低于1.12 的都可以)迁移完成,再使用该版本。

2、官方是支持 0.9 以下版本,0.11 已经不能顺利的迁移过来了,基本都是数据库的问题,所以迁移过程中,报错信息会具体指出缺少了哪个表,缺少了哪个字段,手动打开数据库补上就可以了。

3、开始迁移以后,一定不要再运行 gogs 了,因为再次运行 gogs 可能会把数据库搞乱,运行 gogs 后再运行 gitea 会导致重新进行迁移,会遇到很多问题(都是泪/(ㄒoㄒ)/~~),可以考虑做个备份移到其它地方,以免手欠。

4、迁移完成后,可能打开任何项目都是 404 页面,应该是迁移过程中执行的不完整,在官方 issue 里有一个类似问题的解决方案,我试了下很管用:

https://github.com/go-gitea/gitea/issues/2906

复制代码
insert into repo_unit ("repo_id", "type", "index", "config") 
select repository.id, types.*, '{}' from repository
left join repo_unit on repository.id=repo_id 
left join (
  select 1,1
  UNION ALL select 2,2
  UNION ALL select 3,3
  UNION ALL select 4,4
  UNION ALL select 5,5) as types on (1=1)
where repo_id is null;
复制代码
直接在数据库里执行即可,遇到同样问题的可以试试,记得执行前先备份一下数据。

5、还有一个坑,在原来的 repositories 的各个 .git 文件夹中,有一个 hooks 文件夹,里面有两个文件:

hooks\post-receive.d\post-receive

hooks\pre-receive.d\pre-receive

这两个保留了 gogs 的 hook,但是 gogs 已经被删除了,路径找不到推送就会报错,gitea 在执行任务时重新创建了一个叫 gitea 的文件,并没有覆盖掉原来 gogs 创建的文件,所以所有 git 库中的这两个文件都需要删除一下(如果不想删除,就不要删除原来的 gogs,不需要运行,有文件存在就行)。

posted @   不是豆豆  阅读(7334)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
友情链接:迷途


点击右上角即可分享
微信分享提示