GitHub to Codeberg: My Experience

https://news.ycombinator.com/rss Hits: 21
Summary

GitHub → Codeberg: my experiencePublished 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.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 processFirst, I took an hour or so to set up my profile picture, email address(es), SSH keys…Step 1: migrating the reposThis 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!Step 2: repointing links to CodebergOf course I don’t control all links that point to my stuff, but I could at least run rg -F github.com/ISSOtm in my home directory, to catch those within my own repos. It’s possible to automate the replacing process:$ sed --in-place --regexp-extended 's,github.com/ISSOtm,codeberg.org/ISSOtm,' <files...> …and if you’re feeling like bulk-replacing all files in a directory:$ f...

First seen: 2025-11-30 19:47

Last seen: 2025-12-01 15:50