Version control systems, commonly used in software development, are tools whose purpose is to manage the different versions of documents produced throughout the development process.
Ian Sommerville quotes in Software Engineering, the importance of a good versioning system of source code:
“To support version management, you should always use version management tools (sometimes called version control systems or source code control systems).
These tools identify, store, and control access to the different versions of components. There are many different version management systems available, including widely used open source systems such as CVS and Subversion (Pilato et al., 2004; Vesperman, 2003).”
Another version control definition was made by Roger S. Pressman:
“Version control combines procedures and tools to manage different versions of configuration objects that are created during the software process.”
Among the characteristics offered by the version control tools we will highlight in this some of those that give advantage to the projects developed through agile methods.
Version control tools allow multiple developers to work in parallel on the same files without one overwriting another’s code, making teamwork easier. All management of what has been changed in each file by each of the users is in charge of the version control tool.
This gives greater agility to the development process, since several users can work on the same functionality at the same time, since the responsibility to merge between what was done by each user in a document is done by the control tool version.
Traceability in the software development process
When you create a new version of a document, version control tools try to identify it only, so that this version can be retrieved at any time. In addition to assigning an identifier, version control software also stores who created the new version and the date it was created.
Optionally, when creating a new version of a document, the user can add a comment describing what has changed from the previous version of the file.
In agile projects it is common for several members of the development team to work in parallel on the same functionality. As a consequence, it is also common for them to make changes to the same documents, which can lead to conflicts between their versions.
So the ability to track what was changed in each version of the document is an advantage, since it lets you know what was changed, who changed, and when it changed.
This information helps to resolve conflicts and allows an analysis of the evolution of the document in question over time.
Importance of version control in automated build and release
In the agile process of software development, one of the features is the build and deploy automated source code. This enables agility in deliveries and customer satisfaction.
However, in order for this process to be possible in a fast and secure way, it is important to have good version control of the source code that will store what is ready to be published by the automated release process.