Revision Control

Tim Chase python.list at tim.thechases.com
Wed Feb 18 13:36:17 EST 2009


> -CVS (One of the first RCS, I think most projects are moving away from this
> one.)

I wouldn't suggest starting a new project with CVS.  Subversion 
(svn) resolves several of the main issues with it, so using SVN 
instead wins over CVS in just about every possible way.

> - Subversion-(pretty popular right now, but it is a client/server model.)

A good solid & popular choice, but the merging capabilities are a 
bit weak (the latest version just added some better capabilities 
for branching/merging, but it's a bit of a hack).  It's also not 
the most efficient storage -- git and mercurial (hg) both have 
very efficient repository structures compared to SVN.  The family 
DVCS tools (git, mercurial, bzr, darcs) are stronger in this 
area.  My employer uses SVN for their primary repository. 
Documentation is outstandingly good (documentation for the others 
is also good, but SVN's is exceptional).

> -Git (originally created for Linux and now used by several very large
> projects)

I've tried several times to like git -- some folks swear by it. 
The Win32 support has been a bit wanting, but growing.  I find it 
a bit more complex but it's certainly not lacking for power. 
I'll continue to try it occasionally to see if it meets my needs 
better than Mercurial

> -Mercurial (this is a big up and coming RCS)

This is currently my favorite:  good branching/merging, fast, 
written mostly in Python (one C extension module, IIRC), and a 
simple interface

> -Bazaar (written in Python. Also pretty new. I don't know about Windows
> support)

I like Bazaar (bzr), but the last several times I've tried it, 
it's been a little slow.  This has been steadily improving, and I 
like their emphasis on correctness foremost.  It's a lot like 
mercurial, but is pure python (no C extension module) which makes 
it nice to deploy into environments such as my shared web-hosting 
service where I can't build extension C modules or install 
packages such as hg/git/svn from the repository.

All of them have GUI interfaces if you need, but I tend to just 
use them from the command-line.  For most of them, you can get by 
with a handful of commands without needing to learn every last 
corner.

For what you (the OP) describe, I'd suggest SVN, Mercurial, or 
Bazaar as they're a little easier to wrap your head around -- SVN 
wins for documentation, Mercurial wins for speed and merging, and 
Bazaar wins for portability and merging.  Git would win for sheer 
power, but if you're just beginning, I'd skip it for now.

-tkc











More information about the Python-list mailing list