• 7.3: Version Control Systems

    Version control is a process or tool for tracking and managing changes to software code. Changes occur during the code development, testing phases, and maintenance. Changes are made by you or your teammates working on the code. A change could result from an improvement, an error, or a change. Software code is organized according to the software architecture and stored as modules. Version control provides a standard way of assigning a version identifier to a module file, which includes the version name and creation date/time. Version control is one activity of Software Configuration Management (SCM).

    Version control tools have existed since the beginning of assembler language programming. Yes, they have improved over the years to include some Software Configuration and project management functions and improvements in usability, security, performance, adaptability, etc. However, conceptually (i.e., at a higher level of abstraction), they have not changed because they provide support for the identification and control of stored data and changes to that data - fundamental functional requirements that are not likely to be affected by new technology or, in other terms, the process and procedures for version control, except for increasing efficiency, scale, or security. For example, Git and GitHub are old but still among the most popular tools for version control and software code repositories. Here are summaries of these two code support tools.

    1. Git (2005) - Linux open source community - distributed version control system or software code management system - supports branching, merging of branches, distributed development, CI/CD (continuous integration / continuous deployment), cloud storage, developer collaboration;
    2. GitHub (2009) Microsoft - software code repository platform - web-based management of software code repositories, uses Git for version control and developer collaboration.