Source control vs. Revision Control?

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?


  • 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.


    I like to think of it this way:

    Revision Control is what they do.

    Source Control is what I use them for.

    :-)


    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 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.
  • 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:

    在这里输入图像描述

    链接地址: http://www.djcxy.com/p/92240.html

    上一篇: 为什么git submodules与svn externals不兼容?

    下一篇: 源代码管理与版本控制?