记一次Gitea迁移Forgejo操作

40

forgejo

闲来没事想搞个类似于 Github Pages 的服务,了解到了 Codeberg ,然后注意到了 codeberg.page ,自行部署没有成功,但是看到 Codeberg 用的程序是基于 Gitea 的分支开发的 Forgejo

Forgejo 成立于 2022 年 10 月 ,当时一家营利性公司接管了 Gitea 项目。它存在于非营利组织 Codeberg e.V. 的保护伞下,是为公众的利益而开发的。在接下来的一年里,这种治理的差异导致了使 Forgejo 与 Gita 显着而持久地不同的选择。

因为看到上面的介绍,所以想着尝试下切换到Forgejo 试试,而且切换非常方便。

Gitea 迁移

Arch Linux 官方源有 Gitea 和 Forgejo 软件包, 但它们安装到不同的位置并以不同的用户身份运行。 因此,如果你之前是用 pacman 安装的 Gtea ,那么从一个过渡到另一个非常见简单。

第一步是安装 Forgejo 包,并停止 Gitea 服务。

$ pacman -S forgejo
$ systemctl stop gitea

配置迁移

现在,我们可以将 Gitea 配置复制到默认的 Forgejo 配置上。 我们需要设置 group owner 和 group 写入权限,以便 Forgejo 可以写入它。

$ cp /etc/gitea/app.ini /etc/forgejo/app.ini
$ chown root:forgejo /etc/forgejo/app.ini
$ chmod g+w /etc/forgejo/app.ini

数据迁移

如果我们想保留 Gitea 数据的副本不变(建议在出现错误时) 下一步是将现有数据复制到 Forgejo 用户的主目录。 我们需要将文件的所有权更改为 forgejo user 和 group 也是如此。

$ cp -r /var/lib/gitea/* /var/lib/forgejo
$ chown -R forgejo: /var/lib/forgejo/*
$ mv /var/lib/forgejo/data/gitea-repositories /var/lib/forgejo/data/forgejo-repositories

最后,我们需要更新配置,它当前指向 /var/lib/gitea、 以指向新位置。 编辑 /etc/forgejo/app.ini 并替换 /var/lib/gitea/var/lib/forgejo

数据迁移(无副本)

如果你不担心无法回滚到 Gitea 安装, 只需要修改 /var/lib/gitea 的权限,无需更改配置文件。

$ chown -R forgejo: /var/lib/gitea/*

启动 Forgejo

无论用哪种方式,都用下面命令启动 Forgejo 服务。

$ systemctl start forgejo

检查服务是否已启动,没有问题。

$ systemctl status forgejo
$ sytemctl enable forgejo

最后,卸载 Gitea。

$ pacman -R gitea