• 从 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 文件夹,里面有两个文件:

    hookspost-receive.dpost-receive

    hookspre-receive.dpre-receive

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

  • 相关阅读:
    linux-01-04(创建文件夹mkdir,进入目录命令cd,创建文件命令 echo cp vim touch等,批量创建文件操作)
    linux-05(tar命令的使用)
    linux-06(移动命令mv)
    linux-07(复制命令cp)
    linux-08(查看命令历史记录history)
    cookie
    vue-router路由懒加载
    setTimeout async promise执行顺序总结
    forEach陷阱
    函数节流与函数防抖之间的区别
  • 原文地址:https://www.cnblogs.com/xwgli/p/13178223.html
Copyright © 2020-2023  润新知