I'm doing some research on revision control in practice, and there seems to be two names for the same thing in books and papers: Software Configuration Management (SCM), and Version Control Systems (VCS). The former seems to be popular with software engineers / Java programmers, and the latter with from sysadmins, but both appear, at layman's glance, to mean the same thing.
On the other hand, in the past I've interpreted SCM to mean something like puppet or cfengine. Can anyone set me straight on these two terms in practice? Preferably with concrete examples.
Source code management (SCM) is used to track modifications to a source code repository. SCM tracks a running history of changes to a code base and helps resolve conflicts when merging updates from multiple contributors. SCM is also synonymous with Version control.
Version Control. These two terms are used interchangeably. However, source control is specific to source code. Version control also covers large binary files and digital assets.
What Is Version Control? Version control, also known as source control, is the process of tracking and managing changes to files over time. VCS — version control systems — are software tools designed to help teams work in parallel. You can use version control for versioning code, binary files, and digital assets.
Probably the best known examples of centralized VCS systems are CVS and Subversion, both of which are open source, although there have been many commercial examples (including IBM's Rational ClearCase).
Caution, SCM can refer to different meanings about Versioning:
Moreover, people may use SCM to refer to other naming:
Let's define them:
Therefore, just using the acronym SCM is confusing: some people may understand the same meaning as VCS, some others may understand the whole process where VCS is just an aspect.
Version Control Systems are just that, software that provides versioning functionality (Git, Subversion, TFS Version Control) all fall into this category.
Software Configuration Management is a broader term that encompasses all the processes needed to build, package, and deploy software -- this includes Version Control Systems. It does not refer to software per se.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With