从 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,不需要运行,有文件存在就行)。
输了你,赢了世界又如何...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!