Gitlab vs Gitea

Why Gitea

由于对 gitlab 比较熟悉,所以在搭建个人仓库的时候,也是首选的 gitlab。但是 gitlab 实在是太臃肿了,消耗资源太大,虽然功能强大,但是对于个人来说,只是为了存储项目,其他功能基本用不上,白白浪费资源。

在一次机缘巧合中,我发现有些项目使用的是 Gogs 和 Gitea 来搭建代码仓库,使得我对 Gogs 和 Gitea 有了初步的认识。二者都是极简的代码仓库,并且都是使用 Go 语言开发,性能强悍。就功能上来说,Gitea 比 Gogs 稍多,也较为耗资源,但是对于本身就不占资源的平台来说,资源消耗并不是重要的点;在界面上来说,Gogs 比较像 Github,而 Gitea 则比较像 Gitlab。(Gitea 还是从 Gogs fork 过来修改的。🤫)

image

Gogs 界面预览

image

Gitea 界面预览

对于用习惯 Gitlab 的我来说,用 Gitea 来取代臃肿的 Gitlab 作为个人仓库,是最完美不过了。😉

What's Gitea

下面就来详细介绍一下 Gitea 以及它跟其他代码仓库的对比。

Gitea 是一个自己托管的 Git 服务程序。他和 GitHub, Bitbucket or Gitlab 等比较类似。他是从 Gogs 发展而来,不过我们已经 Fork 并且命名为 Gitea。

Gitea 的首要目标是创建一个极易安装,运行非常快速,安装和使用体验良好的自建 Git 服务。我们采用 Go 作为后端语言,这使我们只要生成一个可执行程序即可。并且他还支持跨平台,支持 Linux, macOS 和 Windows 以及各种架构,除了x86,amd64,还包括 ARM 和 PowerPC。

主要特性

表格中的符号含义:

  • ✓ - 支持
  • ⁄ - 部分支持
  • ✘ - 不支持
  • ? - 不确定
特性GiteaGogsGitHub EEGitLab CEGitLab EEBitBucketRhodeCode CE
开源免费
低资源开销 (RAM/CPU)
支持多种数据库
支持多种操作系统
升级简便
支持 Markdown
支持 Orgmode?
支持 CSV?
支持第三方渲染工具?
Git 驱动的静态 pages
Git 驱动的集成化 wiki
部署令牌
仓库写权限令牌
内置容器 Registry
外部 Git 镜像
WebAuthn (2FA)?
内置 CI/CD
子组织:组织内的组织

代码管理

特性GiteaGogsGitHub EEGitLab CEGitLab EEBitBucketRhodeCode CE
仓库主题描述
仓库内代码搜索
全局代码搜索
Git LFS 2.0
组织里程碑
细粒度用户角色 (例如 Code, Issues, Wiki)
提交人的身份验证?
GPG 签名的提交
SSH 签名的提交??
拒绝未用通过验证的提交
仓库活跃度页面
分支管理
建立新分支
在线代码编辑
提交的统计图表

Issue 管理

特性GiteaGogsGitHub EEGitLab CEGitLab EEBitBucketRhodeCode CE
跟踪 Issue
Issue 模板
标签
跟踪时间
Issue 可有多个负责人
关联的 issues
私密 issues
评论反馈
锁定讨论
Issue 批量处理
Issue 看板
从 issues 创建分支
Issue 搜索
全局 Issue 搜索
Issue 依赖
通过 Email 创建工单
Service Desk

Pull/Merge requests

特性GiteaGogsGitHub EEGitLab CEGitLab EEBitBucketRhodeCode CE
Pull/Merge requests
Squash merging
Rebase merging
评论 Pull/Merge request 中的某行代码
指定 Pull/Merge request 的审核人
解决 Merge 冲突
限制某些用户的 push 和 merge 权限
回退某些 commits 或 merge request
Pull/Merge requests 模板
查看 Cherry-picking 的更改

第三方集成

特性GiteaGogsGitHub EEGitLab CEGitLab EEBitBucketRhodeCode CE
支持 Webhook
自定义 Git 钩子
集成 AD / LDAP
支持多个 LDAP / AD 服务
LDAP 用户同步
支持 OpenId 连接?
集成 OAuth 2.0(外部授权)?
作为 OAuth 2.0 provider
二次验证 (2FA)
集成 Mattermost/Slack
集成 Discord
显示外部 CI/CD 的状态

Effect

经过一晚上的折腾,终于将 Gitlab 上的项目代码,迁移到了 Gitea,不过资源节约效果也是杠杠的,迁移前都准备着手升级 NAS 了,迁移后感觉我的 NAS 还可以再战 5 年。Perfect!😎

image

迁移前的 Gitlab 仓库

image

迁移后的 Gitea 仓库,简洁而充实。😁

image

Gitea 和 Gitlab 资源使用对比