Re: Version Control [was: Damaging the source code]
Re: Version Control [was: Damaging the source code]
- Subject: Re: Version Control [was: Damaging the source code]
- From: Jens Alfke <email@hidden>
- Date: Mon, 2 Nov 2009 10:17:11 -0800
2009/11/1 Ben Haller <email@hidden>:
I, for one, would like to hear people's opinions of the best version
control system for use by independent programmers (i.e. where the
choice is
not dictated by the company or team you're working with). What's
easy to
set up, easy to use with Xcode, reliable, etc.? I've been ignoring
this
issue for a long time, but it's about time I started paying
attention to
it...
Subversion, Git and Mercurial are the main contenders. I'm a Mercurial
fanboy (I even wrote a GUI client for it), but will use Git despite
its bizarre command set. I'll put up with Subversion when working with
projects that use it, like at work, but would never host my own
projects with it.
My recommendation is to use Mercurial. There's a double-clickable Mac
installer, the command set is easy to learn if you're used to
Subversion, and the workflow is great compared to an old-school VCS. Bitbucket.org
is a great place to host public repos, even if it isn't as fancy as
its idol Github.
Here's a somewhat-objective list of pros and cons.
Subversion:
+ Xcode supports it, so you can do most operations right in the IDE.
+ The most popular system (I think) currently.
+ Several 3rd party GUI interfaces (Versions, Cornerstone,
TortoiseSVN, ...)
- Requires a server
- Making a repository requires configuring server
- Can't use most of its functionality if you're offline
- Slow unless your server is local
- Running your own server is a PITA
+ Lots of sites will host repos for you (Google Code, SourceForge,
etc.)
- Repository can only be hosted in one place
- Branching/merging is pretty clumsy
- Splatters ".svn" directories all over your source tree
Git:
+ Lots of momentum
+ Fast
+ Very powerful command set, esp. for manipulating branches and merging
+ Distributed
+ Trivial to convert any source tree into a repository
+ Good Subversion interface (lets you mirror an SVN repo and work with
it using Git)
+ Excellent public repository hosting via GitHub
- Commands have unusual names
- Basic source-file workflow (add / modify / commit) is confusingly
different from anything else, until you get used to it
- Limited GUI support (not sure if there are any Mac apps?)
- Complex installation, adds dozens of commands to your path
- Repositories are not very space-efficient
- Poor Windows support (if that matters to you, i.e. for cross-
platform code)
Mercurial:
+ Reasonably fast (unless you have a huge repository like the Linux
kernel)
+ Command syntax is a lot like Subversion's, making for an easy
learning curve
+ Add / modify / commit workflow is very much like Subversion
+ Distributed
+ Trivial to convert any source tree into a repository
+ Excellent cross-platform support (it's written in Python)
+ Small, easy to install
+ Can easily host repos on any server that you can SSH into and
install Mercurial on (e.g. Dreamhost).
+ Quite-good public repository hosting via Bitbucket or Google Code
+ Compact repository structure
- Limited GUI support (there's my Murky app, and TortoiseHg)
- Merge/branch commands not quite as powerful as Git
- SVN integration not ready for prime-time yet
(There are a few other contenders, like Bazaar, Darcs and Monotone,
but they seem to be falling behind.)
—Jens _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden