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:
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 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:
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.
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:
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.
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.
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.
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.
Redmine is a tool that supports project management and covers the following areas:
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:
Task Manager and Git are used together for better quality work between teams.
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 .
Please contact our team, we will be glad to help you.