Keeping your code close and private, when you want to, is surely as important as easily sharing it and letting the community contribute. GitLab (http://gitlab.org) understands this and lets you self-host Git repositories that fit your company or team. In this chapter, we will cover what is GitLab and the points that stand out the most when compared to its competitors.
Topics covered in this chapter are as follows:
GitLab features
Where GitLab excels
Cloud-hosted GitLab
Support for your own GitLab
Competitors
In this chapter, we will take a look at what features are available, how you can use them, and which competitors are worth examining.
GitLab is a system for managing Git repositories. It's written in Ruby, and allows you to deploy meaningful version control for your code easily.
It was first published on GitHub in October 2011, and has grown into a powerful tool since then. GitLab is published under the MIT license, but it is mandatory to keep a mention of the author when redistributing the code.
The lead developer is Dmitriy Zaporozhets, who also runs a hosted platform for GitLab installations at gitlab.com.
GitLab has many features. The most outstanding ones, surely, are the user-friendly web interface and the possibilities of managing permissions. The built-in features for documentation of projects or tracking needed changes with the issue tracker are very strong points for GitLab.
The web interface resembles the one of GitHub in many cases, which has proven very functional to many developers.
It is very consistent and plain, in spite of the quantity of functions it contains. It's possible to open merge requests for branches, view diffs, or even edit files right in the web interface, and then stage the changes to a commit.
Who has the permission to do what, and how easy is it to add and change team members? These are the key questions you should ask yourself when dealing with administering users on any platform.
GitLab has some very well-designed roles, and allows you to apply these. From guest to master, you have diverse possibilities to limit and grant access to functions such as pushing to repositories or which branches a developer can push to, so that you can control which code ends up in your product or project.
Documenting projects can be a difficult thing to track, because it is often not described as an important task from the start; but, with GitLab you have great tools for making it more meaningful and faster to create. Through built-in issue tracking and wikis, you can cross reference files, commits, and of course other wiki pages. These are great tools that can enable your team to keep everybody on the same page and prevent projects, no matter how complex, from growing into something that is hard to understand.
Anyone who develops software or manages software development can benefit from using GitLab. The core concept of Git is to get distributed to keep revisions of your code maintainable and make a team work together more efficiently.
Git is great at these things. The problem, which especially is an obstacle for beginners, is that it does not present this very clearly.
Everything it shows is in a terminal window, and without using additional software around it. It's not a very intuitive experience if you don't have years of experience with the command-line interface or similar tools.
GitLab is like a user-friendly layer on top of Git, which provides ease of use, easily managing permissions with clicks, instead of long shell commands. It has a much more visual workflow that increases your speed and ease of working with Git.
Also, it makes it much easier to help the newly hired developers to get started, or update the head of your department on the state of a project—all in the browser. Developers who join a project months after it has been kicked off can easily get an overview, check the progress, and understand it quickly.
GitLab allows you to use the full potential of Git, without demanding you to work only in the terminal on the server side.
If you choose not to host GitLab yourself, but to let the people who know it best host it for you, you can subscribe to a dynamic subscription model at http://www.gitlab.com/cloud/. Hosting is free up to 10 users, which gives small development teams a chance to try it out before making a commitment. In case you need more contributors, you can sign up for a paid plan.
At the time of writing this, up to 15 users is as cheap as 9 USD a month; whereas, a maximum of 25 will cost you 49 USD; and the largest solution with support of a 1000 contributors is 1999 USD a month.
If you need support for your own installation of GitLab along the way, a support subscription right now (at the time of writing) is priced at 149 USD a month, according to http://www.gitlab.com/subscription/.
Consider a support plan if you have a system administrator who does not want to compromise other tasks for either troubleshooting or optimizing the new GitLab installation.
GitLab is not the only solution of this kind. It's my favorite because of the ease of installation and maintenance, the easy-to-grasp interface, and it is quick in production. Another open source solution you can deploy yourself is Gitorious. You can take a look at their free web hosting solution for public repositories.
GitHub, of course, is an outstanding service in terms of usability, design, and much more; but, it only offers free hosting of public repositories. It is a platform of choice when you are aiming for gathering contributors around your project, because it has such a large community.
Now you've read what GitLab is all about and how it is available, both for you to install and as a hosted service. We've scratched the surface of features that grant administrators flexibility and control and the interfaces that provide usability for the users.
In the next chapter, we are going to cover the installation process and how to set up your own copy of GitLab on a server of your choice.