Tech News
← Back to articles

GitHub to Codeberg: my experience

read original related products more articles

GitHub → Codeberg: my experience Published Sat 29 Nov 2025 . Estimated reading time: 11 minutes.

In which I talk about the process involved in switching forges, and how well that went.

ℹ️ Motivation Why am I getting out of GitHub? See the previous episode.

Spoiler alert: this very site that you’re reading this on is not served from GitHub Pages anymore! At this point, I’d call my migration successful. But it took more than clicking a single button, so let’s talk about the steps involved, at least for me. I’m hoping that it can help be an example for other people, and show that it’s actually not that complicated.

(My) migration process

First, I took an hour or so to set up my profile picture, email address(es), SSH keys…

Step 1: migrating the repos

This wasn’t difficult, because Forgejo (the forge software that powers Codeberg) offers a “migrate from GitHub” functionality. You need to generate a PAT on GitHub to import things like issues (which is awesome!), and as a bonus it also speeds up the process.

It was, however, tedious, because the process was entirely manual (perhaps there’s a way to automate it, like by using some Forgejo CLI tool, but I didn’t bother looking into that). And, due to GitHub API rate limits, whenever I tried importing two repos at the same time, one or both would fail. (It wasn’t too bad, though, since I could fill out the migration page for the next while one was in progress; and generally, it took me roughly as long to fill it out as it took Codeberg to perform the import.)

I’m really happy that issues, PRs, wikis, and releases can be imported flawlessly: this makes it possible to not have to refer to GitHub anymore!

... continue reading