Comparison with Git, Mercurial or Darcs?

Stephen J. Turnbull stephen at xemacs.org
Thu Nov 5 10:11:00 GMT 2009


Daniel Carrera writes:

 > How does a VCS differ from an SCM? I thought that SCM was Source
 > Code Manager and was just another word for VCS.

Well, for starters I have to acknowledge Ben Finney's phrase.  An SCM
is a deployment system, a VCS is a development system.  Now let's
unpack that a bit.

As far as I know the idea of using a VCS as a software configuration
manager goes back to Tom Lord, the author of the Arch dVCS (a direct
ancestor of Bazaar).  Tom believed in source code distributions rather
than binary ones, so the idea was that there would be a distributed
repository of source code, and you'd say at the command prompt or in a
browser "install <app> @<revid>" and your HDD and CPU would spin for a
bit, and it would be ready.  A la the BSD ports system (Tom, you
probably won't be surprised, is not a fan of Linux distros), except
based on VCS revids rather than releases in tarballs.  Tom at least
occasionally used the term "SCM" for this broader application.  I
don't know how Linus (or maybe it was Junio Hamano or ...) got hold of
it, or maybe they invented it independently, but they decided that
"SCM" meant "source code manager" and that's the way a lot of
lkml/gitsters refer to VCS.

What a software configuration manager (from here on, that's what "SCM"
means) does that a VCS doesn't is to manage *external* relationships
of the software, such as dependencies.  All modern VCSes either have
what Subversion refers to as "externals" and git calls "submodules",
or they aspire to developing them.  That is, prerequisite subprojects
that you refer to by their name and perhaps revid in the metadata,
rather than by incorporating their source code.  This is SCM
functionality, albeit very primitive.  Closer to true SCM
functionality is the typical "distro package management system", but
they definitely deserve their acronym[1], and tend to be kind of
inaccurate.  They're also a PITA for upstream developers to deal with.
Cf the "What Canonical wants from Bazaar thread" (and even more any
threads that refer to why Bazaar needs to cooperate more closely with
Ubuntu).

One way to lok at that whole project is as a way to develop a
powerful, Ubuntu-wide, SCM.

Footnotes: 
[1]   Google "premenstrual syndrome" if you don't get the reference.




More information about the bazaar mailing list