Switch from SVN to xxx ?
Tom Widmer
tom.widmer at googlemail.com
Fri Jun 4 12:36:20 BST 2010
Nicolas Pinault wrote:
> Hi all,
>
> This message is sent to Bazaar and Mercurial user lists.
>
> I work in a small dev team.
> Long time ago, I introduced Visual Source Safe for source versionning.
> Why VSS ? Because projects which where of a concern were Visual Studio
> projects. As VSS was in the place, we also used VSS for other kinds of
> projects. But VSS is a nightmare. So, after years, I switched most
> projects to Subversion. SVN is incredibly better than VSS. I like SVN.
> I find it easy to understand its way of working (even if is this not the
> case of some of my colleagues). I find it fast and reliable. I use
> TortoiseSVN (a little) and Subclipse (a lot). Eclipse integration is a
> must have. We have many projects managed with Eclipse (cross-compilation
> projects for embedded systems).
> I read many things about distributed versionning systems for years now.
I haven't widely used any of them, but I'm primarily a Windows java
developer currently on SVN (I handled the import from VSS), so I'm in
exactly the same boat as you (though we use IntelliJ IDEA, not Eclipse).
> I have spent many hours reading articles and comparisons between DSCM.
> It is hard to get a conclusion because most articles are outdated.
> Especially since Bazaar 2.x. It seems that Bazaar and Mercurial are the
> finalists (Maybe because I like Python language). Apparently Git is not
> correctly supported under windows and is harder to understand.
Don't discount Git. I'd say it's actually easier to understand
conceptually, though it's command line is a nightmare for Windows
developers. There are GUI tools (such as GitGUI), it has the most active
developer community (even on Windows possibly), it has a pure-java
implementation (used by Eclipse, JGit, which should work fine on
Windows), etc. If you use a continuous integration server, most systems
support Git (and many don't support bzr or hg).
> So, Bazaar or Mercurial.
> I have 2 problems :
> - I still wonder what kind of benefice I can expect if I switch to
> Bazaar or Mercurial.
Pros:
Improved performance
More workflows available (e.g. branch per feature, or per bug, are possible)
If you don't use svn:externals or other svn specific features, migration
will be simple using bzr-svn/hg-svn (in fact, you can just start using
bzr-svn to trial it for your own purposes without your colleagues even
realising - it is mostly seamless).
Better local checkout performance (SVN's working copy library is
currently pretty slow)
Much faster for operations that would normally require network access in
SVN (e.g. log, diff, etc.)
Disconnected operation (useful for working from home without a VPN)
Cons:
Splitting up your repository might be a pain (often in Subversion, your
entire company can use a single repo (e.g. look at the HUGE Apache SVN
repo).
Managing combining the different repos into a sensible on-disk layout
(bzr-externals, scm-proj, hg nested repos help here, but there is no
automatic migration path from SVN)
No partial checkouts (related to above)
GUI support is less mature (particularly in Java IDEs)
SVN file/dir properties are not fully handled by any other the other
systems, so if you use them extensively, you will have to find an
alternative.
SVN has the most mature for multi-platform development (e.g. newline
conversion, etc.).
Cherry picking support is not as good as you might expect (and not
notably better than SVN 1.5 really) - it can be better to fit your
workflow to the tool rather than try to make it fit to your workflow, by
eliminating the need for cherrypicking to release branches (e.g. by
using the merge-fixes-forward technique).
> - If I switch to one of them, which one ?
Bazaar and Git's branching models works better with heavy-weight IDEs
(since you can switch a checkout between branches, much like SVN (except
much much quicker!)). Mercurial supports this for named branches, but
they are only recommended for long lived branches (such as release
ones). HG bookmarks also allow this, but are not a core feature, and
local only at the moment I think.
Performance should be ok with either, though Bzr has some issues with
its wire protocols (they are being fixed though).
> I have read Bazaar and Mercurial documents. Of course, each one claims
> to be simpler, better... than the other. For now, I can see only one
> real difference : speed. But we don't have very big projects. Only quite
> big projects. So speed should not be of a concern.
The different branching models are a major concern if you are using a
heavy weight IDE. You can't possibly afford to use one-branch-per-bug
for a large project using a Java IDE in HG for example, since that
requires initialising your IDE for a new working tree (or you can try hg
bookmarks) - that will take longer than fixing the bug in many cases! By
contrast, Git and Bzr have better core support for switching a single
tree between branches, but as I mentioned, you could take a look at hg
bookmarks.
Finally, HG is gaining traction in the Java world thanks to Sun
switching to it, so that may be a consideration. OTOH, I would prefer
Bzr personally, for it's more powerful branching model.
Tom
More information about the bazaar
mailing list