What's the difference between VCS and SCM?

Solution 1:

Caution, SCM can refer to different meanings about Versioning:

  • Software Configuration Management as explained in JimDaniel's answer
  • Source Control Management is same as Version Control and Source Control and VCS

Moreover, people may use SCM to refer to other naming:

  • Source Code Management as in Source Code Control System
  • Software Code Management but this is a deformation of Software Configuration Management
  • Source Configuration Management same meaning as Software Configuration Management but maybe more focused on source code than on the whole software (settings, command line arguments, host parameters...)

Let's define them:

  • Version Control Systems are the standalone software to manage the versions (Git...)
  • Source Control Management is the same as VCS
  • Software Configuration Management is all processes to manage all the changes of the software: the development (VCS), the delivery release (VCS), the bug tracking, the software settings, the host/network settings, the version/settings of the other software interacting with...

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.

Solution 2:

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.