Source control vs. Revision Control?

Version ControlNaming

Version Control Problem Overview


Which is the correct name for a system which stores versions of source code, like SVN or TFS?

I've always called it source control, but places like Wikipedia calls it revision control?

To make this more complicated sites like this one have a tag for both?

Version Control Solutions


Solution 1 - Version Control

  • 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 - Version Control

There are three synonyms describing almost the same thing:

  1. Revision control. Deals with revisions (document/artifact reviews and subsequent versions of document/artifact) or numbers (as an abstraction of revision concept).
  2. 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.
  3. Source code management. Deals with more complex operations over the source code: storing it in a repository with the possibility of creating separate branches. It is also assumed that branches can be merged. Another part of source code management is tagging. 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.
  4. 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:

enter image description here

Solution 3 - Version Control

I like to think of it this way:

Revision Control is what they do.

Source Control is what I use them for.

:-)

Solution 4 - Version Control

  • Version Control System (VCS) is the most commonly used term
  • Source Code Management (SCM) is used in git, but it's sort of invented and can be confused with Software Configuration Management which is already used in the software industry and it's not the same thing.

Solution 5 - Version Control

The terminology used is not very precise. There is an article describing the five relevant dimensions. Data management tools for software development don't tend to support more than three of them consistently at the same time. If you want to support all five you have to describe a development proces:

  • Version (semantics: modification)
  • View (semantics: equivalence, derivation)
  • Hierarchy (semantics: consists of)
  • Status (semantics: approval, accessibility)
  • Variant (semantics: product variations)

Peter van den Hamer and Kees Lepoeter (1996) Managing Design Data: The Five Dimensions of CAD Frameworks, Configuration Management, and Product Data Management, Proceedings of the IEEE, Vol. 84, No. 1, January 1996

Solution 6 - Version Control

Certain systems (like SVN) have a term revision which stands for a number associated with a specific set of versions of all files in the repository. In such systems revision (SVN revision) essentially means version (sources version). Otherwise revision control and version control are the same terms.

Solution 7 - Version Control

There's not a "correct" name, the four common names are:

  • Version control system
  • Revision control system
  • Source control system
  • Source code management system

Solution 8 - Version Control

another name is: version-control

Based on the tags used on this site, "source control" is the most popular one (which is quite normal, since this site is about programming):

  • source control (633 tags)
  • version control (587)
  • revision control (31)

Solution 9 - Version Control

MIL-STD 973 Describes Configuration management.

Software Configuration Management is done exactly the same.

See the CMMI for a nice explanation of SCM/CM.

The systems of which you speak are version control systems. They version things.

Old SCCS was a Source Code Control System.

Source code control systems maintain revision history.

Say you change a file from revision

1.1 , 1.2, 1.3.

At 1.3 we release "Awesome Edition" of our product.

1.3 is a revision AwesomeEdition is a version.

In systems like CVS, revisions happen as numbering changes , and tags mark versions. SVN type repository revision numbering confuses government customers who expect MIL-STD kind of behaviour.

The great thing about standards in change management is that there are so many to choose from.

Solution 10 - Version Control

If historic precedence is anything to go by, the term should be Source Code Control - see http://en.wikipedia.org/wiki/Source_Code_Control_System

Solution 11 - Version Control

So, what exactly are you looking for now?

I don't think there is one right term. Both terms, as well as some other already mentioned in other replies are used for basically the same thing.

Persons you are talking to will connect it to slightly different meaning even when using the same word for it - and they can mean really exactly the same thing, even when using another word.

Then again, the vocabulary used around these things can also be different(or attached to different meanings) in circles around different software implementations of this concept.

While writing this, it comes to my mind that this is a very natural phenomenon - in other areas you also have multiple words standing for basically the same meaning - while some would argue there are actually slight differences, some others would say these differences do not really exist or aren't worth thinking about. And it's never guaranteed that when two people use the exact same word, that they really mean the exact same thing.

Solution 12 - Version Control

I added a comment, but I think it can qualify for an answer as well. I have a little different view then some of the other comments already expressed.

In general SCM (Software Configuration Management) or (Source Code Management - derived term) it is easy to understand as it is used as an umbrella term which includes both revision control as well as other techniques like baseline management. See http://en.wikipedia.org/wiki/Software_configuration_management. In general modern SCM tools which range from CVS to Git include both of these techniques and many more useful features like: permission control, rights management, security auditing, allow customization of the SCM flow (ClearCase), integrate with build-system and issue tracking software, etc... I think the list is open because anything related to software change and management can enter here.

So the main confusion comes from understanding the difference between Revision Control, Version Control and possibly Source Control. First of all, all terms which include "source" are all derived terms, by that I mean some people are bothered by all these generic terms (configuration management - what's that?) and insist that they work with source code in particular and they don't care about other use-cases; which is fair point.

Regarding Revision Control vs Version Control I think the correct term (in context of tools like SVN, Git) is Revision Control. In my view, with the term Revision Control the emphasis is on managing the change (besides managing the versions) of the (not only) source code files, while with Version Control the emphasis falls on managing only the versions of the files.

In theory someone could write a piece of software which allows tracking and management of binary files with no binary diff and merging support and would call this Version Control System. However in case of tools like SVN, Git these additionally allow managing the changes to the files: diffing, merging and in case of Git the famous rebasing.

So in conclusion Revision Control includes Version Control and is more appropriate in naming tools like CVS, SVN, Git; while Source Control is a derived term and should be avoided if one would like to name a specific SCM aspect.

SCM > Revision Control > Version Control

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRobert MacLeanView Question on Stackoverflow
Solution 1 - Version ControlVonCView Answer on Stackoverflow
Solution 2 - Version ControlalternView Answer on Stackoverflow
Solution 3 - Version ControlRon SavageView Answer on Stackoverflow
Solution 4 - Version ControlFelipeCView Answer on Stackoverflow
Solution 5 - Version ControlStephan EggermontView Answer on Stackoverflow
Solution 6 - Version ControlsharptoothView Answer on Stackoverflow
Solution 7 - Version ControljwanagelView Answer on Stackoverflow
Solution 8 - Version ControlM4NView Answer on Stackoverflow
Solution 9 - Version ControlTim WilliscroftView Answer on Stackoverflow
Solution 10 - Version ControlanonView Answer on Stackoverflow
Solution 11 - Version ControlHenningView Answer on Stackoverflow
Solution 12 - Version ControlarpadfView Answer on Stackoverflow