On Tue, Mar 13, 2007 at 04:25:50AM +0900, Trans wrote:
Should I be using SVN rather than Darcs or Git?
Only if all your co-developers are. But otherwise, probably not.
So I’m wondering, what’s so special about SVN as opposed to the other
choices? Is it because SVN is more like CVS than the other choices?
Pretty much, it’s also been around longer and thus is “more mature.”
Subversion is reasonably familiar to those who are used to the CVS
of revision control. Although just because people are used to it, and
popular, doesn’t make it necessarilly good. Frankly, I’m not much of a
of Subversion, although I much prefer it to CVS.
Also, Git was written by Linus Torvalds, which is about as good as
credentials can get.
Yes, however Git was written to achieve nothing more than managing the
Linux kernel. The fact that it’s applicable to other problem domains is
coincidence, not a design feature. If you’re managing a project that
resembles the Linux kernel, Git might be the right choice for you. If
there might be an impedance mismatch.
Recently I’ve become a fan of Mercurial. It has a few issues (besides
being written in Python =P), but otherwise I find it to be a better
for my needs than Subversion. I also considered Git, but I found it
less approachable, although 1.5.0 is supposed to be easier to use.
My biggest gripe with Subversion is that branch merges are braindead
to specify revision boundaries), which makes branching much less useful
than it could be. Two minor gripes are that the BDB backend was a
only recently seems to have gone away, and that operations tend to be
In general, I’m a fan of the distributed model of development, be it
Mercurial, Git, Darcs, etc. Branching is a great concept that isn’t
effectively in CVS or Subversion becuase of branch/merge limitations.
I like being able to checkout a project (often one I don’t have
permissions to the central repository other than read), make a bunch of
local changes and local commits that don’t affect other users, then
tested perform a branch push (possibly with a pull/merge).
I find that with Subversion folks are much less willing to make
intermediate commits since they tend to affect all users unless a
branch is used, and branches are difficult with Subversion.
The one scenario where I find Subversion really useful is when I
specifically don’t want to maintain a local copy of an entire
especially a large one like the Linux kernel. With Subversion, I only
a local copy of the checked out revision. That’s the one thing where I
wish there was better handling in distributed revision control
systems–although folks may claim that such handling would break the