#acl HlpLabGroup:read,write,delete,revert,admin All:read #format wiki #language en #pragma section-numbers 2 = Version Control = Version Control Systems (also called Source Control Management (SCM) or Revision Control Systems (RCS)) are a type of software for keeping track of changes to files and merging changes from multiple users (usually developers) into a common tree. There are a number of different VCSs out there. Here we will focus on commonly used open source ones. == Historically relevant (and probably installed) == * '''CVS''' - essentially the Ur version control system. Very common still, but not recommended for new projects * [[http://www.nongnu.org/cvs/|CVS official site]] * [[http://cvsbook.red-bean.com/cvsbook.html|Open Source Development with CVS (eBook)]] * [[http://en.wikipedia.org/wiki/Concurrent_Versions_System|CVS wikipedia entry]] * '''Subversion''' - designed to replace CVS and correct some of its flaws. Similar syntax to CVS. Too much like CVS for many people's taste, but probably the most commonly used VCS still. [[http://code.google.com|Google Code]] and [[http://sf.net|SourceForge]] offer it for projects they host. * [[http://subversion.tigris.org/|Subversion official site]] * [[http://svnbook.red-bean.com/en/1.0/index.html|Version Control with Subversion (eBook)]] * [[http://en.wikipedia.org/wiki/Subversion_(software)|Subversion wikipedia entry]] The Developer Tools package (available on the install discs or from [[http://developer.apple.com/|ADC]]) for MacOS X 10.4 installs CVS, and 10.5 also installs SVN. Third party packages also exist for SVN for earlier versions of MacOS X. Windows machines should have [[http://www.tortoisecvs.org/|TortiseCVS]] and [[http://tortoisesvn.tigris.org/|TortiseSVN]] installed. These programs integrate CVS and SVN into Windows Explorer. == Recommended (and installed) == All of these are distributed VCSs, which means that each user has a full tree including revision history; there is no privileged central tree (unless you want there to be). * '''Git''' - A VCS designed by Linus Torvalds to meet the needs of the Linux kernel developers. Powerful but complicated (read: often arcane, complicated, and frustrating). Other notable projects using Git include Perl. NB: On MacOS X, the official Git package installs the binaries to `/usr/local/git/bin/`, so you'll need to add that to your path. * [[Git|Git local wiki page]] * [[http://git.or.cz/|Git official site]] * [[http://en.wikipedia.org/wiki/Git_(software)|Git wikipedia entry]] * [[http://nathanj.github.com/gitguide/tour.html|Git on Windows tutorial]] * [[http://github.com/|GibHub (project hosting)]] * '''Bazaar''' - a VCS written in [[http://www.python.org/|Python]] by [[http://www.canonical.com/|Canonical]] software (makers of [[http://www.ubuntu.com/|Ubuntu]] Linux) for their needs. It's about as powerful as Git, but with much less jargon and with simpler command syntax. Bazaar is designed in part to integrate well with Canonical's [[https://launchpad.net/|LaunchPad]] project hosting. Now used by MySQL, among others. * [[http://bazaar-vcs.org/|Bazaar official site]] * [[http://en.wikipedia.org/wiki/Bazaar_software|Bazaar wikipedia entry]] * '''Mercurial''' - VCS written in Python and C. Created when the makers of Bitkeeper (the VCS formerly used by the Linux kernel team) pulled free licenses for open source projects. The kernel team went on to create Git instead, but other projects (most notably Mozilla, Java, and Python) use Mercurial. It is extremely flexible, but can be a bit arcane and scary (i.e. When a merge is necessary it wants to make you deal with it ''right now'' instead of leaving merge markers), and you really want to be sure to have it configured before first use, but it's still more user friendly than Git, and close to it in speed and repository compactness. * [[Mercurial|Mercurial local wiki page]] * [[http://www.selenic.com/mercurial/wiki/|Mercurial official site]] * [[http://developer.mozilla.org/en/docs/Mercurial|Mozilla Mercurial documentation]] (very much a work in progress) * [[http://hgbook.red-bean.com/hgbook.html|Distributed revision control with Mercurial (eBook)]] * [[http://en.wikipedia.org/wiki/Mercurial_(software)|Mercurial wikipedia entry]] * [[https://bitbucket.org/|BitBucket (project hosting)]] == Worth noting == * '''Darcs''' - designed to replace CVS and SVN. Written in Haskell and "based on a unique algebra of patches". * [[http://darcs.net/|Darcs official site]] * [[http://en.wikipedia.org/wiki/Darcs|Darcs wikipedia entry]] * '''Monotone''' - another VCS designed to replace CVS and SVN. But like Git, Arch, Bazaar, and Mercurial, it's designed to be decentralized. Not amazingly popular though. * [[http://monotone.ca/|Monotone official site]] * [[http://en.wikipedia.org/wiki/Monotone_(software)|Monotone wikipedia entry]] * '''Arch''' - a distributed VCS. Mostly superseded by Bazaar, and not under active development, but you might run across projects using it. * [[http://www.gnu.org/software/gnu-arch/|Arch official site]] * [[http://en.wikipedia.org/wiki/GNU_arch|Arch wikipedia entry]]