GitLab vs GitHub vs Bitbucket: What to choose?

One can’t imagine the development process without using any Version Control System (VCS). The greatest thing about VCS is its ability to track all the changes to your code and to backtrack and undo those modifications if necessary.

Git is an example of a Distributed Version Control System (DVCS), also called a source code management system, which lets you return to a previous status on a project or to see its entire evolution since the project has been created.

What is so good about using Git?

It helps you to facilitate management of complex projects and to avoid overwriting your developers’ progress and work. Moreover you just pull all of your code and history to the system.

What happens to your files when you put them to the repository?

Usually the files go through the following stages before being put under vision control with Git:

•  Working Directory (Untracked). This is the place where all changes and modifications are made. Still it’s not part of Git’s version control. So in order to make files be a part of Git version control we use the command #git add or #git add (and you know that dot here can mean just anything..).
•  Staging (Staged): now all the files have been added to Git’s version control and are tracked by Git. Still the changes have not been committed yet. So to commit changes we use #git commit -m “commit message”.
•  Committed: all the changes have now been committed.

With so many tools available in the market, why Git is still is the most popular choice for Source Code Management?

•  Git tracks state, history and integrates of the source tree.
•  Git keeps old versions of the code, and if any developer finds a mistake in the code, you can always use the previous version to fix the bug.
•  Multiple developers can work together. Once they write the code in their local machine and commit it, other developers can pull it easily.
•  It has large developers’ community and online websites to upload your source codes or get others source codes to make your work easier.
•  Many software tools are available for those who are comfortable with the command line and for other GUI tools.
•  Easy and clear documentation to get started with.

Git uses some repositories management services like Github, Gitlab, Bitbucket etc.

Let’s have a brief look at them.

GitHub may be the first name in open source repository hosting, but when it comes to private repo hosting services with additional bells and whistles aimed at enterprises, the game is not so cut and dry. All three vendors base their platforms on the Git Distributed Version Control System. Each offers an on-premises solution for hosting reports inside your firewall — GitHub Enterprise, GitLab, and Bitbucket Server.

GitHub has a a very intuitive, informative and familiar UI. If you decide to install GitHub, you will absolutely take it easy. It features LDAP integration, Jira integration and has a big number of other features that companies value greatly. Also there are few things you need that Github doesn’t do.
On top of enterprise features it has Gists (a way to share code snippets), ability to modify files right from the browser (which is super useful if you make notes at the meeting), works with almost any cloud provider and has a powerful search. It also provides you with its own Wiki and issue tracking.

As you can see, such list of features can meet most of the demands of the users. And if it is not enough, you can easily add Jenkins, JIRA, Confluence, BugZilla, Trello and many other products.
Short-and-sweet, GitHub truly is the gold standard for code repositories.

As for March 2018, Github boasts 27 mln users, which is slightly bigger than the population of Australia!

GitLab has more or less the same features, and its UI is as great as the one from GitHub. It looks pretty much the same, so switching from GitHub to GitLab will not be a mess for you.

GitLab Community Edition is free and open sourced. That in itself gives it a huge boost when compared to GitHub Enterprise Edition (the only version that can be installed on the company’s premises). While there are some features available only in the enterprise edition, you might not need them and even if you do, it makes the decision easier knowing that you can start with the free version and upgrade to the paid one later on. GitHub also has a trial version but for a limited time, which is obviously not the best option.

Using GitLab community edition, you might be comfortable until the end of time or you might start with the enterprise edition right away. The good thing is that you have a choice that does not expire.
Pricing for the enterprise edition is reasonable (several times lower than with GitHub). Unlike GitHub, GitLab can be installed on practically any hardware/OS/CM combination. Its installation is very simple.

In general, GitLab shows the abilities and power of open source with endless combinations that community invented and described.

After the announcement that Microsoft acquired GitHub, Twitter just burst with countless messages from people promising to move from GitHub to competitive services like GitLab and Atlassian’s BitBucket.

And it seems like some really keep their promises. GitLab says the number of repositories now is ten times bigger than the usual normal daily amount. Let’s see what the future will bring to us by the end of the year.

Bitbucket is a web-based hosting service for source code and development projects that use either Mercurial (since launch) or Git (since October 2011) revision control systems owned by Atlassian. With Bitbucket you can choose between a commercial plan and free account.

If you make up your mind on a free account, you will have an unlimited number of private repositories (for up to 5 users). Also Bitbucket has integration with other Atlassian tools like JIRA Software, HipChat, Confluence and Bamboo.
2017 was a momentous year for Bitbucket Cloud users. 17 million pull requests merged, 6 million repositories created, and over 10 million Pipelines builds run – it’s clear that individuals and teams created a lot of promising stuff last year!

Final thoughts

When you are in need of a source control system, you need to compare them depending on your development requirements and budget. Make sure to consider all the costs and benefits of the system in the short and long term prospective. In the end you need to find a system that totally supports how you work now and how you plan to work in the future, which fits within your budget, and provides the best value for you, you team and product.

Julia Govor

Business Development Manager