What is an SCM system and why your company should use it
SCM, or Source Code Control System, is a standard used by software developers to streamline the creation and distribution of code. Its idea is to avoid the use of physical media (such as a CD or even pen drives) to distribute sources under development.
The advantages of using an SCM system
One of the SCM systems’ main advantages is version control (SVC/CVS or Source Version Control), which allows viewing the history of changes made to the code, thus making it possible to find when a particular problem was solved and what was changed. to resolve it.
SVC systems keep sources separated by “tags” and “branches”. The tags represent versions where the code was sent to production and branches where it is in active development.
Normally, codes stored in tags should not be changed, as they represent an official version of the software. During the development process, the source code is sent to the branches, which are later joined (an operation known as merging) and become a tag.
Another advantage is its flexibility, being able to operate using business rules (such as filters and restrictions) or even integrate other external systems, such as a Continuous Integration (CI) system or a ticket/helpdesk management system.
Commercially available implementations
The SCM standard has several implementations that were developed over the years by different people and companies, each one designed to solve a certain problem that occurred during software development.
Some of the most used version control systems are:
• Subversion (or SVN) – Developed by Apache Software in 2000 (the company that created Tomcat, a web server used by several WEB systems), initially to replace and improve the CVS (Concurrent Versions System) system, which is now in disuse.
• Git – Created by Linus Torvalds (creator of the Linux Kernel), in 2005. It was developed to replace the BitKeeper system that was used to control Linux sources at the time, since it had been privatized. Currently, it is the most famous version control system, being used by thousands of companies around the world.
• Mercurial (or Hg) – Created by Matt Mackall in 2005 to be an alternative to BitKeeper, which could be used by other open-source projects at the time, such as Linux itself.
• Team Foundation Server (TFS) – Developed by Microsoft in 2005 to meet its internal (and external) demand for source control, the system stores the codes in the cloud and is directly linked to a Continuous Integration system also developed by the company.
Why use an SCM system?
Keeping source codes is important both for software developers and for companies that have internal systems and customizations, since:
• It organizes source code storage, avoiding programming discrepancies (for example: between the machines of two developers) and
• It acts as an active backup in case the developer’s machine fails.
SCM systems also allow the restoration and verification of previous versions, something that can help solve problems in an effective way (through “downgrading” or even by making it easier to find the changes made), thus reducing the downtime of services in production.
Above all, SCM systems keep things organized, as they separate different versions of the same product into different “tags” and “branches”, enabling quick consultation and analysis of the development changes.
Neomind
Here at Neomind we use Subversion (SVN) and GIT as source control tools, as they efficiently meet our internal needs. Neomind also offers source guard services and customizations for its customers with a build process and automated test integration.