Source control vs. Revision Control?
Solution 1:
Revision Control is the more generic term, used for source-control tools but also for other tools (Word, OpenOffice, ...). It references a version.
Source Control offers revision control with branching and merging which are not always available in all revision tools (Word is not a Source Control, but offer revision control features)
Version Control is a more general term than Source Control in that it manages version of anything (sources or binaries, or any kind of documents)
Note: SCM stands for Source Code Management, but also for Software Code Management, to reflect the same idea (not just "sources" are managed).
Plus SCM introduces the notion of dependencies between group of files.
And it can also includes the notion of change lifecycle (start a change, close a change, ...) which leads to change request system.
Solution 2:
There are three synonyms describing almost the same thing:
- Revision control. Deals with revisions (document/artifact reviews and subsequent versions of document/artifact) or numbers (as an abstraction of revision concept).
-
Source control. Deals with text (source) files, not binary. This difference plays a great role as long as it is much more easier to perform comparison and get difference between text files. There is a whole range of basic tools related to source control:
diff
,diff3
,patch
, etc. This set of tools can be extended to form source control solution. Example of such solution is RCS. -
Source code management. Deals with more complex operations over the source code: storing it in a
repository
with the possibility of creating separatebranches
. It is also assumed that branches can bemerged
. Another part of source code management istagging
. One problem with source code management is that it has abbreviation SCM. This abbreviation is used to describe more broad set of activities - Software Configuration Management. There's a lot of confusion because source code management is a subset of software configuration management which also deals with such activities as build management, deployment management, continuous integration, dependencies management, release management, etc. - Version control. It is used as substitution for such term as source code management in order to avoid ambiguity. It incorporates both concepts of revision control and source control making it to describe almost the same concept. Currently, both terms revision control, source control are substituted with version control as more appropriate taking into account the wide range of tools (CVS, SVN, Git, Mercurial, ClearCase, Perforce, VSS, etc) which solve both tasks of revision control and source control simultaneously.
Picture to illustrate more clearly distinction between all of these concepts: