A review of Gogs – Go Git Service, a new self-hosted website for managing your Git repositories.
Gogs is a self-hosted code repository and collaboration platform for the Git distributed version control system. Gogs follows a lot of GitHub’s workflow and design decisions, all built on top of the Go language. The result is a familiar — and fast experience.
Gogs has repositories for various popular platforms including Debian and Redhat based systems. Installation is pretty easy, with a simple INI file for modifying it’s configuration (I haven’t seen one of those in new software in forever).
I’ve installed mine through the Puppet module Siteminds-gogs which leveraged the Debian 7 packages from Gogs’ own repository, though it has some bugs on it’s configuration templates and could use some love, it’s most of the way there for being version 0.0.3!
One word: Fast.
It’s really fast, the website is extremely responsive and push/pulls are faster than anything I’ve experienced using cloud based solutions — I honestly thought Git was just slow at it.
The second thing you’ll notice is it’s pretty much GitHub, organizations work the same, repositories work the same, forking is the same, management is the same. You’ll feel right at home coming from GitHub. It is however currently missing pull request support but that is in the works.
Again — if you’re a GitHub user this will all feel familiar. You can have private repositories like normal, you can add users to these repositories. Additionally you have organizations, organizations can have repositories and teams. Teams can be granted access on all projects under an organization, or you can add users individually to projects under them. The only thing I could see that would be helpful here is the ability to create and reuse teams.
We’re missing some key pieces to make Gogs a replacement to something like GitHub, pull requests are one of them, gists are another. Of course Gogs is young and is receiving a lot of help so I expect these to get finished soon.
Other than that, everything is clean and easy to use. There is little functionality I see missing from my day-to-day usage, and a few extra freebies such as 3rd party issue support that I need to investigate (for those of us that don’t like integrated issues in our DVCS hosting platform).
Handful of 500 errors aside from doing dumb things, LDAP integration went really screwy when I set a filter incorrectly. So far I’ve moved all of my development to it, and minus the LDAP issue and cloning empty repositories I haven’t seen a 500 error. Solid!
Though I’m sure there are issues here and there, for the age of the project I’m impressed.
Gogs is looking to add pull requests relatively soon, I’m personally rooting for Mercurial support (but don’t hold your breath). Their Trello board is available online showing what they’re currently working on and their Github is thriving with pull requests, issues, and discussions. I’m excited for this to continue to mature.
My experience with Gogs has been so positive that I’ll likely be moving all of my Mercurial repos over to it. RhodeCode was nice but the pricing structure for 10+ users has really killed it (more on that in the RhodeCode review) with Kallithea being the only one I’m seriously looking at anymore (but don’t have high hopes being as the forking point for RhodeCode was when it was still pretty slow, and Gog’s speed has spoiled me).
The main worry I have about Gogs is a somewhat slow development process. Currently the project is lead by Unknwon over on GitHub, and they’re currently very busy — leading to a nearly complete halt on the project, some forks have emerged but this project has thrived under Unknwon and their dedication to this and I’d love to see it continue under them.