After receiving an email from Bitbucket stating they will be changing their pricing, we had to decide as a team whether we are willing to continue using their services or if we could find something better.
While we've been using Bitbucket for quite a while, we always like to challenge the tools we use and we often go back and re-consider all the choices we make. This allows us to stay up to date with the constant changes and improve our efficiency when we find a better tool.
GitLab was intriguing because it looked similar in some ways to GitHub but was still very different. We created ourselves some accounts and decided to test it out. There was an extensive list of simple UI items that we loved over Bitbucket right away.
The transition was very easy as GitLab allows you to import projects from multiple sources, such as Bitbucket, GitHub, etc. We created ourselves a group for all of our projects and the import was as simple as clicking one button.
The only thing left to do was to add our SSH key to our accounts and change the local project git remotes. All the tags, issues and branches were transferred and we were good to go.
After using GitLab for a bit over a month, here are some differences we noticed:
Let's say you're looking for a project.
Bitbucket has two horizontal menus with no explanation on which one does what.
By default you land on the Overview tab on the lower menu. From here, you see an overview of your projects, but in order to really find what you're looking for, you need to navigate to the Repositories tab. Except... which one?
While the top menu has a Repositories item, it is only used to create or import a repository. The link in the bottom menu is what you need to click to view all your repositories. Would you have known unless you tried it?
GitLab has ONE horizontal menu and ONE vertical menu. While still two menus, things are starting to make more sense. It is a lot clearer which menu does what based on where they are positioned. One menu allows you to navigate across the website while the other allows you to navigate within your local view (Project, Group, Etc).
Finding your project has never been simpler.
The issues are very hard to properly filter on Bitbucket as they only allow ascending or descending filters on the main page. In addition, their advanced menu is on a different page and every time you have to navigate to a different page it means you are wasting time.
GitLab not only has advanced filters right from the start, they also offer a board to help project members get organized (much like Trello does, which we already use).
While Bitbucket allows you to add snippets, you can only add global snippets and you cannot add project specific ones.
In GitLab, you can add global snippets, but you can also assign them to a specific project.
While both Bitbucket and GitLab have pipelines, GitLab pipelines are FREE.
Bitbucket doesn't seem to pay too much attention to the community when new features are asked. For instance, the two factor authentication feature was asked in December 2012 but was only implemented on September 2015.
Looking at the GitLab issue tracking board, they seem to be taking into account all the feedback given to them, which is a good thing, and each new version brings a crazy amount of new features.
When you want to merge two branches in Bitbucket, you have to create a pull request. GitLab changed the name to a merge request. This is not a major change, but still an important one.
In Bitbucket you have to add deployment keys to each individual project even if two projects need to use the same key.
GitLab allows you to use an existing key, or add a new one. We like this feature as it allows us to quickly select which key to use rather than copy/paste an existing key.
Bitbucket is still a great tool to use depending on your needs. GitLab is of course not a tool without issues, but after a full month of using it, we are very happy with the change.
We would love to hear your thoughts on the matter. Feel free to contact us.