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