Github, GitLab, and Bitbucket are software version control repositories. These let programmers check out code and then push updates back to the cloud, normally using Git or Mercurial command line tools. You can also install some of these products in-house. And they can also be connected to a host of applications, like NodeJS or Zeppelin notebooks, so store code in the cloud as well. Development shops often use Jenkins to pull code from these repositories
There are some basic concepts to learn. These let developers take a fork to make changes to software that would not affect the main branch. The programmer works on the code on their laptop. The software keeps track of changes in their location repository which they commit to update the local repository. Then, if they want to push those changes back onto the main branch the programmer can do that using the merge function. Whoever is responsible for the main branch approves all changes.
Mercurial versus Git
Git and Mercurial both do basically the same thing: then let programmers clone a repository, make changes, then push the changes onto whatever branch they are working on in the code repository.
Both products are complicated to learn. Mercurial, some say, is less complicated but in my view both are complex.
Mercurial probably has fewer users than Git. And I found in writing this article that it was difficult to get it to work with SSL3, i.e. TLS2, using self-signed certificates.
Free versus Paid
If you want to have a private repository on Github you have to pay for that. To help cut into Github’s larger market share, Bitbucket lets you have up to 5 users for free. Github costs $9 per developer or $21 for their Enterprise product. Gitlab, is somewhat different, as we explain below, because they are focusing more on a devops product than simple code repository.
Github
This system has the largest number of users, with major opensource projects hosting their code there. Github is free for public repositories, meaning those you want the public to be able to download (called clone). This is how projects, like Apache Spark distribute their code (in addition to publishing to Linux repositories, etc.).
Bitbucket
Bitbucket is good for small teams on a budget. For private repositories, it is free for up to 5 users. It is basically the same as Github. So you could conclude they are trying to take some market share away from Github by making parts of Bitbucket free.
Gitlab
Gitlab is shifting their focus to devops according to their own web page. They write, “Now, we’re taking it a step further to unite development and operations in one user experience.”
So which one should you use? I would pick Github and use git and most people use those, so your developers probably already know that, and it is not expensive.