From GitLab to Forgejo.
History, issues, and merge requests import over the GitLab API. The CI rewrite is the deliberate part, and we plan it with you.
What moves for you
Confirm whether the source is GitLab.com or self-managed, generate an access token with repository and API read access for the projects being imported, and Forgejo’s migrator pulls them over the GitLab API. Merge requests arrive as pull requests, so the review history is not flattened into plain commits.
Git history, branches, tags
The full repository imports over the GitLab API: every branch, tag, and commit, from GitLab.com or a self-managed instance.
Issues and merge requests
Issues, merge requests, comments, labels, and milestones come across. Merge requests land as Forgejo pull requests with their discussion intact.
Releases and wiki
Releases and wiki pages transfer where the GitLab API exposes them, so tagged artifacts and project docs move with the code.
What needs manual steps
GitLab bundles more into the platform than GitHub does, so more of it is a deliberate rewrite. The repository content moves cleanly; the CI, planning, and policy layers are recreated on the new forge.
GitLab CI to Forgejo Actions
This is the real work. `.gitlab-ci.yml` stages, rules, caches, and protected variables have no automatic port; they are rewritten into Forgejo Actions workflows and secrets. The CI page covers the mapping.
Epics, boards, and iterations
GitLab’s epics, issue boards, and iterations are planning surfaces above the issue, with no one-to-one Forgejo equivalent. Decide what to flatten into labels and milestones.
Protected variables and registries
CI/CD variables, the container and package registries, and environment scopes are configuration and stored artifacts. Re-create the variables as secrets and plan registry cutover.
Approval rules and group settings
Merge-request approval rules, protected branches, and group-level settings are policy, not content. Recreate them as branch protection and required reviews on the new forge.
Why teams make the move
A calmer, owned forge without the sprawl: single-tenant, priced per instance rather than per seat, with written no-AI-training terms. Team and Pro add dedicated, unmetered runners, so the CI you rewrite runs on capacity that is yours.
And if you ever leave
Your data exports in the upstream Forgejo format any time, per-repository or as a full forgejo dump. The same openness that lets you come in lets you go out.
