A bit about code versioning
Tags: git, github, programming, beginners
Published: 2023-02-17 13:00:00

A parallel knowledge to programming languages, but very important for any developer, is code versioning. As the name suggests, it is the knowledge of versioning and/or saving versions of an application.

Put that way, it sounds like a common thing, like saving multiple files of different versions in some folders. However, in practice, code versioning is something even more organized - and a little more complex.

---

###What is Versioning?

Every project is done in stages, with functionalities being implemented or improved little by little. Therefore, it is necessary to create versions that can be resumed whenever necessary in case of any unforeseen events.

In other words, code versioning is like having multiple files, each with improvements over the last. However, instead of having to save a lot of files - which is impractical in computing and for the organization in general - these versions are made, in the code.

Code versioning is part of good programming practices and is important for a project organization, contributing to teamwork and also creating a "backup" of all changes.

###How to do Versioning?

Code versioning is done during code construction by the developer, using the chosen IDE terminal - where the code is written - or in the computer's own terminal.

To carry out versioning, specific tools are used for this, called version control systems. Being Git, the best known and that has several features that help in this organization.

It needs to be installed and configured on your computer to work locally. It doesn't have a visual interface, - although you can install one, [GitKraken](https://www.gitkraken.com/download) being the most famous one - that's why you need to use the terminal to create your versions.

In addition, the versioning itself is also done in stages, as it considers both the local and a remote repository. Thus, Git has the function of contributing to the organization of the code and also for sending it to a remote repository.

![The process of code versioning](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b164wy76b3t7y8j2v68f.png)

To be able to do code versioning, you need to know the terminal commands, which create repositories, commits and reverse versions.

###What About GitHub?

Many people think that Git and Github are the same thing, but they are not. Github is a tool to gather repositories remotely. From Git it is possible to send code changes directly to Github.

That is, Github works as a remote location to store the code and its versions. Thus, it is widely used in teams, since everyone can send what is done remotely and gather everything in the same remote Github repository.

It is also seen as a visual interface to Git, as it shows branches and other details in a more simplified way than in the terminal. In practice, it's like “saving” your version in a cloud service.

By bringing together a programmer's repositories, Github has also become a social network and a [portfolio](https://jasonh33.github.io/portfolio/en/index.html), as public repositories can be accessed by people. Therefore, it is interesting that every programmer has a Github and trains code versioning with it.

###Some Softwares

Understand now 5 of the best version control tools.

- <u>**GIT**</u>

Is one of the most popular version control system, especially in open source projects. This is mainly due to the popularity of GitHub, a platform for hosting code. Although it can be used in other tools, GIT is the one that gained the most repercussions in this regard.

The main advantages of this tool are the internal design and interface, the effectiveness and performance of the software. This means that it is pleasant to use, achieves all the goals of good software control, and is fast. Despite being the main software version control tool available on the market, it has slightly more complex controls compared to other software.

This means that employees need to understand a series of deeper concepts related to software version control in order to use this tool correctly. Despite this, it is a distributed version control tool, which means it is suitable for use in large teams where developers are not geographically located in the same location.

---

- <u>**Mercurial**</u>

Mercurial is a software version control tool used by big companies like Facebook and Google. It is quite efficient, which means it can perform the basic functions of a good software control very well.

Mercurial is a very fast tool in executing commands and still works very well for large teams, where developers are not all working in the same place. This is because it is a distributed version control tool.

This tool doesn't have many of the downsides pointed out by critics. It is a bit more complex to use compared to Subversion, for example. However, it is still easy and quick to learn by the development teams and has security measures to prevent errors.

---

- <u>**Subversion**</u>

In the corporate environment, Subversion is a widely used software version control tool. It is quite fast in executing the system's functionalities and is still one of the simplest to use. This means that with a basic knowledge of concepts related to version control, it is possible to execute commands in the tool. The team learns quickly in this aspect as well.

One of Subversion's problems is criticism of the software's effectiveness. In the past, this tool has struggled to perform key functions of an effective version control. However, the last released versions seem to have solved everything that was pointed out as a disadvantage of the program.

Subversion is a centralized version control tool. This means that it is not suitable for all teams, only for those that are smaller - with only a few dozen developers - and are gathered in the same physical space.

---

- <u>**TFS**</u>

TFS — short for Team Foundation Server — is another software version control tool that can be used in your company. It brings a series of interesting features, especially if you use agile methodologies in your company.

This is because it enables project management through SCRUM or CMMI. It also allows for use in a centralized or distributed manner, being suitable both for teams that share the same physical space and those that work remotely. Another advantage presented by this system is the fact that it does not have growth limitations and has direct integration with Microsoft Office.

---

- <u>**CVS**</u>

CVS is one of the oldest software control tools on the market. The first version of it was developed in 1968. The biggest disadvantage of this tool is the fact that it is considered an old technology. However, it is still widely used by teams of developers.

It is very simple to operate. This means your team can quickly learn how to use all CVS functionality efficiently.

---

Knowing how to version code correctly is essential for any programmer and, therefore, is considered basic knowledge of the area. There is no way to develop code without being able to version it correctly.

Now that you understand the basics of versioning and some of your software, you will need to know the commands to use them, and this is precisely the topic of the next article.