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.
History, issues, and merge requests import over the GitLab API. The CI rewrite is the deliberate part, and we plan it with 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.
The full repository imports over the GitLab API: every branch, tag, and commit, from GitLab.com or a self-managed instance.
Issues, merge requests, comments, labels, and milestones come across. Merge requests land as Forgejo pull requests with their discussion intact.
Releases and wiki pages transfer where the GitLab API exposes them, so tagged artifacts and project docs move with the code.
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.
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.
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.
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.
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.
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.
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.