GitLab - GIT Repository Management, Wiki & Issue Tracking System

Choosing a Git repository management system has become important in recent times. Individuals and teams are looking for easy to use, cheap, and open source repository management systems. And GitLab is one of the best Git repository management systems available . It is open-source, has web-based Git repository management, wiki and issue tracking system. It is a great tool that allows centralized management of Git repositories. It has a user friendly web interface and the possibility of managing permissions. This article provides a complete overview of the product, comparison with similar products and problems associated with it.

GitLab-Product Overview

GitLab is a framework that manages Git repositories and allows to deploy repositories easily. It is written in Ruby. In October 2011, GitLab was first published on GitHub and since that time it has grown into a powerful tool. GitLab is published under the MIT license, so when redistributing the code, it is necessary to mention the author.

gitlab - self hosted git management software

Fig. 1: Gitlab

GitLab is a great tool that allows centralized management of Git repositories. For many projects, solutions like GitHub are a good option, but they do not allow free hosting for private projects. GitLab in turn provides complete control over repositories and makes you able to decide either they are private or public for free. GitLab is database-backed web application, unlike some other Git servers; GitLab’s installation is a bit more involved. Luckily, this procedure is supported and documented as well. 

Basic Usage of GitLab

The first thing you need to do in GitLab is creation of a new project. Just click the “+” icon on the toolbar, and new project will be created. It will ask the name of the project, visibility level, and namespace this project belongs to. Most of what you specify here is temporary and later through the settings interface, it can be re-adjusted. Click “Create Project”, and you are done.

GitLab Administration

The administration interface of GitLab is accessed over the web. Just indicate your browser to the IP address or hostname where GitLab is installed. Then sign in as user or an administrator. “admin@local.host” is the default username, and “5iveL!fe” is the default password (which you will be indicated to change when you enter it). Click the "Admin area" symbol as shown in figure 2 in the menu at the upper right when you are signed in. 

 admin area in GitLab menu

Fig. 2: Admin area in GitLab menu

Gitab Users and user control

Users are the accounts that correspond to individuals in GitLab. User accounts do not possess a great deal of complex nature; principally it is a gathering of individual data related to login information. Every user account accompanies a namespace, which is a logical gathering of tasks that fit in with that client. In the event that the client Jame had a task named project, URL of that project will be http://server/jame/project shown in figure 3. The user can be removed in two ways. First is blocking a user that will prevent the user to login to GitLab instance, but all the data and projects of the user will be preserved. Second is destroying a user. It will remove the user and all its projects and data.

user administration in gitlab

Fig. 3: User Administration screen in the GitLab

Groups in GitLab

A GitLab group is a collection of projects, providing the data about projects that can be accessed by users. Every group have a project namespace (as users also have), and in the event that a group production has a project named materials, its URL will be http://server/production/materials shown in figure 4. Each group has associated user accounts which vary from Guest having almost no control to Owner having full control.

group administration in gitlab

Fig. 4: Group administration screen in GitLab

GitLab Project

Generally, a GitLab project has a close relation with a single Git repository. Each task fits in with a solitary namespace, either a group or a user. If the project does belong to a user, then the owner of the group has direct control over who can access the project, and if the project belongs to a group, user-level permissions of the group will also be affected.

Environment of Collaboration and Working Together

Allowing another user direct push access to the Git repository is the simplest way of working together on a GitLab project. One can add a client to a project by heading off to the "Members" area in the settings of that project, and can associate the new user with an access level. Another way of collaboration is merge requests. This enables a user to contribute in a controlled way. With direct access user can easily create a branch, open a merge request from their branch, and push commits to it. 

Features of GitLab

GitLab has many features and the most important features are a user-friendly web interface and having the possibility of managing permissions. Built in features of tracking needed changes or documentation of a project are also important points for GitLab.

Web Interface

GitLab has a user-friendly web interface that resembles with one of the GitHub in numerous cases. It is very functional to many developers. Despite of the fact that it has many functions, it is still consistent and plain. It is possible to view diffs, edit files in a web interface, and open merge requests.

Managing Permissions

Managing the permissions is one of the most important features of GitLab. Owner can specify that who has the permission to do something and can also add or change a team member. There are some well-designed roles in GitLab that allow users to manage projects with different level of permissions from guest to master. Access can be granted to a user to perform different functions. 

Documenting Project

Documentation of the project is very difficult task to track, but GitLab provides you great tools to make it easy, meaningful, and faster to create. One can cross-reference files and of course other wiki pages through built-in wikis and issue tracking. 

Where GitLab Make Sense?

Anyone who develops software or manages software development can get benefits by using GitLab. It provides the environment to work together in collaboration and also provide maintainability of the code that you can manage your code according to the requirements. The only problem with GitLab is that if someone wants to use the terminal window, then it would be difficult to use without the experience of  using command line interface or similar tools. But it also provides a user-friendly interface, allowing to managing permissions easily with clicks, instead of long commands. It also helps new developers to get started. Without demanding to work on server side or to work only in the terminal, GitLab provides you the full potential of Git.

Cloud-Hosted GitLab

Cloud-hosted GitLab is hosted by the people who know the best about it. It allows hosting of GitLab by other professionals if someone decides not to host GitLab by himself. One can subscribe at subscription model for GitLab, http://www.gitlab.com/cloud/. Hosting is free up to 10 users. It allows small development teams to try it out before any commitment, but it does not allow free hosting for more than 10 users, and for different number of users it offers paid plan with different amounts in USD. 

Similar Products and a Comparison

GitLab has acquired its rival, Gitorious and announced to close down on June 1, 2015. This acquisition was confirmed by GitLab's CEO Sytse Sijbrandij. He said that all the clients of Gitorious would have the capacity to easily migrate their projects to GitLab by that date. 

GitHub is also an outstanding service in comparison with GitLab, but it offers free hosting of public repositories only. When you want to gather contributor around your project, GitHub is a great platform because it has a large community. 

Trac is another product of similar type. For software development projects, Trac is an improved wiki and issue tracking framework. It utilizes a moderate way to deal with online software project management. On team established development process, it imposes fewer terms and policies. 

Launchpad, for primarily open-source software projects, is a Bazaar code and collaboration hosting platform. For public projects hosting is free, but if you need a private bug tracker, private mailing lists and teams, private PPAs, and private code branches, you will have to sign up for a paid plans. You can also host your own project for free.

Other competitors of GitLab include; WorkMate, Gogs(Go Git Service), Kallithea, RhodeCode, Trello, Redmine, Phabricator, Inderfero, GitBucket, Gitblit, Unfuddle, gitweb, SCM Manager, Open Build Service, Project Pier, Gitolite and so on.

GitLab in a Nutshell

As there are numbers of Git repository management, wiki, and issue tracking systems available, individuals and teams are looking for the best system for their projects. GitLab provide almost all the necessary features and flexibilities. It is also competing well with its rivals in the market. It allows the centralized management of Git repositories in great way. It has a user friendly web interface, possibility of managing permissions, issue tracking, and documenting the projects in an easy way. Users prefer to use of GitLab- Git Repository Management system to manage their repositories.

External Links

  1. Gitlab.com - Create, review and deploy code together
  2. Github.com - Powerful collaboration, code review, and code management for open source and private projects
  3. AlternativeTo - Social Software Recommendations