in Expertise

Git is a widely used open source tool for distributed version control of software. This is a file version control repository used for source code versioning and co-development. It's like a collaborative social platform where programmers and companies post their code development projects.  

This control system has the function of recording any changes made to a code, storing this information and allowing a programmer to easily and quickly revert to previous versions of an application if necessary. This type of system also greatly simplifies the process of sharing a project, for example, with a team or with other programmers.  

The importance of GitHub. Introduced in 2008, GitHub is a web version of Git. The projects on GitHub are mostly open source, but you can make your code private, only available to certain people, or create teams. 

Git and GitHub are different things.  You can only have Git on your hard drive for version control. GitHub is for those who want to share your code or put it in the cloud. GitHub has all the features of Git plus several other additional features listed below: 

  • Documentation;  
  • issue tracking;  
  • wikis;  
  • pull requests with comment and code review;  
  • commit history;  
  • email and emoji notifications;  
  • Photoshop files can be viewed and compared to previous versions;  
  • GitHub Pages: Small websites can be created.  

GitHub also allows projects to grow with social use of the tool. Every user on GitHub has their own profile like any other social network, ideal for showcasing their work and contributions to other projects. The project revisions can be discussed publicly, which promotes the exchange of knowledge. Among other things, GitHub also promotes networking between developers. 

GitLab as popular GitHub alternative

GitLab is another popular online service for storing and working with Git repositories, and is used in our company Kenner Soft Services GmbH. The service is based on a database system. It was released three years later from GitHub, so the number of its users is less than that of GitHub. Despite this, the service is used by more than 100,000 projects, companies and organizations, including such corporations as IBM, Sony, Alibaba, NASA, CERN and many others. 

As for the functionality of GitLab, it offers the following features:

  • creation, storage and management of public and private repositories;
  • Organization of shared access to repositories, management of user and group access rights;
  • integration with CI systems;
  • Track changes, comment on projects, create wiki pages, idea and task boards, integrate with third-party software via API, etc.;
  • Authentication and authorization tools, performance analysis and issue tracking, error monitoring and time management, source control and web-based editing console, continuous integration (CI) support, code testing and quality assurance, repository and container management, vulnerability management and scan dependencies.

GitLab offers two free versions: Community Edition for small teams or personal projects (deployed on user's local server) and a free cloud version built on remote hosting server (storage up to 10GB). There are also two paid versions available: the Enterprise Edition Starter and the Enterprise Edition Premium. 

technology git

What workflows are available?

With the introduction of a version control tool like Git, new challenges and new questions are introduced into the development process. Several Git workflows have been released, these are some of them:

Centralized workflow

With this approach, no branch of code is created and the developers work directly on the only existing branch, the master. As an advantage, this workflow does not require the team to maintain multiple branches of code. As a disadvantage, it increases the likelihood of conflicts in the code since all developers use the same branch of code, which can introduce bugs into the system.

Feature branch model

This approach requires developers to create a new code branch for each feature to be implemented. This means that the merging between the feature and the main branch does not take place until this feature has already completed its development. Therefore, new features will never be in the master branch without terminating it.

Forking Workflow 

In this model, each developer has their own repository and the changes are made only in that repository. In order to integrate your code into the central repository, the developer has to make pull requests. This allows the developers to integrate the produced code without having to make the changes directly in the central repository.

However, only the "manager" of the repository can accept the pull request, which truly integrates the code. 

Gitflow Workflow

There are two types of branches in Gitflow Workflow: main branches and support branches. The main branches are called Develop and Master. The master branch contains the code corresponding to the production software. The Develop branch is a branch created from the Master branch and all developers work in this branch. Support branches can be of the Feature, Release or Hotfix type. 

Task Manager - Redmine   

Redmine is a tool that supports project management and covers the following areas: 

  • In the planning processes – when defining activities, estimating activity duration, developing schedules. 
  • In the monitoring and control processes – in the control of the schedule, to show the development of activities; in the management of the project team, to show task divisions, responsibilities, productivity; it is also used for the creation of performance reports (change logs and communication memories between teams). 

Redmine is a flexible project manager for the web, written on top of Ruby on Rails and released under the GPL license, configurable on multiple platforms and supporting multiple databases. 

Its main advantages include:

  • Support for multiple projects, 
  • Flexible levels of access and control, 
  • System for different types of tasks, 
  • Calendar chart,
  • Functionalities such as news, documents and file management, 
  • Support for feeds and email notifications, 
  • Wiki by project, 
  • Forum by project, 
  • Time management,  
  • Various tool usage reports, 
  • Customizable columns by tasks, time spent, projects, users, etc.

Task Manager and Git are used together for better quality work between teams.  

redmine git

How is the cooperation of Git and Redmine realized in our company? 

When the developer receives a task via Task Manager (Redmine), he uses a console utility that allows to follow a fixed workflow on all projects by all programmers. This console utility is a quality assurance, so to speak, that all collaborators follow the unified work process. 

The console utility automatically creates a new branch to the corresponding task and ensures all stages of code review where developers or testers are involved. So, each task in Redmine is assigned a separate branch in GitLab (i.e., each feature is developed in a separate branch), each task is subject to review and published via Release Manager. 

This cooperation between Redmine and GitLab promotes the working speed and automation of the processes on the one hand and the control of the workflow on the other hand, so that all tasks and processes correspond to the uniform quality standards. 

You can read about the code review and testing process in our other articles.

Our agency Kenner Soft Services GmbH pays a lot of attention to the quality of the services provided. We check everything very thoroughly and carefully to deliver the best result to the customers

Are you interested in a dedicated team?

Please contact our team, we will be glad to help you.

human test

Blog Comments powered by Disqus.