Several years ago I wanted to host my own git repositories on my own server and I wanted something usable, which means: no logging in via SSH and running
git init --bare in some directory. So the first tool I tried was gitosis, which was okayish for some time.
Months later when I was fed up with gitosis way of adding new repositories I found out about GitLab, an pretty Ruby on Rails web application, which looked like GitHub in some way. I enjoyed working with GitLab and I recommended it to almost everyone, even people who weren’t asking. But like it goes with every piece of it was getting bigger and bigger with each update and so it started to use up more and more memory. It even used more memory than my Minecraft server, which in my opinion was a little strange. GitLab is literally like the Cookie Monster without cookies but with memory.
Last week I updated GitLab to the recent version and it went from using just 400M of memory straight up to 600M. That was the point when I knew that I had to kill GitLab t. I looked for alternatives and the first thing I’ve found out about was Gogs. It is written in Go and has all the features one needs. And that was reason enough for me to like it. 1
So I installed Gogs to give it a try with my own repositories and after some minutes it was running pretty smoothly. A quick glance on the memory graph revealed that it just uses around 15M to 20M of memory.
I decided to switch to Gogs and when I found out about their cool Migration Interface I was incredibly happy. It even has an Migration API for migrating repositories in batches, which I discovered after migrating 25 repositories by hand.