Source control & code review
GitHub, GitLab, Gitea, and Forgejo all host Git and review changes — the differences show up in what's enforced server-side.
GitHub, GitLab, Gitea, and Forgejo (a community-governed fork of Gitea) all do the core job of hosting Git and reviewing changes. The differences show up in what's enforced server-side, and what still costs extra once you're past the basics.
| Feature | KHUB | GitHub | GitLab | Gitea | Forgejo |
|---|---|---|---|---|---|
| Unlimited private repos & collaborators | |||||
| Pull/merge requests with inline review threads | |||||
| CODEOWNERS-based automatic review requests | |||||
| Branch protection (required PR, approvals, status checks, signed commits) | Limitedfewer rule types | Limited | |||
| Tag protection with signature requirement | Limited | Limited | Limited | ||
| All three merge methods (merge commit / squash / rebase) | |||||
| Merge queue for high-traffic branches | ✓ every tier | $Team+ | $Premium | ||
| Versioned per-project wiki | |||||
| Open-ended discussions (not tied to an issue/PR) | |||||
| Repository mirroring, push and pull | $Enterprise | pull free / push $ Premium | |||
| Server-side pre-receive hooks | $Premium push rules | Limitedshell access only | Limited | ||
| Secret & dependency scanning | Limitedsecret scanning is $ GHAS | $Ultimate | |||
| Git LFS with no storage quota | Limitedquota-based | Limitedquota-based on SaaS |
GHAS is GitHub Advanced Security, billed per active committer on top of an Enterprise plan. Gitea/Forgejo's protection rules are real and useful — they simply cover fewer distinct rule types than GitHub, GitLab, or KHUB today. KHUB's merge queue serializes approved, CI-green pull requests onto a protected branch automatically — no seat tier required, and no babysitting merges one at a time.
