Some people say that SCM means software configuration management. It’s the same thing as source code management. Both are lousy phrases. However, source code management, while not strictly accurate because SCM databases contain lots more than source code, does a better job of conveying what an SCM system does than software configuration management. Another synonymous phrase is version control system, because SCM systems keep track of all changes to a software code base
For many years, the most popular SCM system was called CVS, the Concurrent Versions System. Created in the mid-1980s, CVS was available free (under the GNU General Public License), easy to set up, easy to administer and fairly reliable. CVS became the default, and still hosts many projects today.
But then came Subversion — intentionally designed as a successor to CVS. Subversion, which today is a top-level Apache project, is much more scalable and reliable than CVS, while just as easy to manage. Whether hosted on the Web (such as by CollabNet), or run in-house on your own enterprise servers, Subversion began taking off around 2002, and since then has pretty much taken over the world.
In 2005, Linux founder Linus Torvalds designed Git. Linus has quipped about the name “git”, which is British English slang for a stupid or unpleasant person. Torvalds said: “I’m an egotistical bastard, and I name all my projects after myself. First ‘Linux’, now ‘git’.”
Git excels as a distributed version control system. It’s not only faster than Subversion, but also lets developers work completely offline on local copies of code repository. That’s not only more convenient, but also more responsive. The local copies are merged together later in the background. Git is also like lightning when it comes to software builds, which is important for very large projects like the Linux kernel itself.