[kwlug-disc] DVCS advice needed

Darcy Casselman dscassel at gmail.com
Mon Oct 5 10:48:04 EDT 2009

On Sun, Oct 4, 2009 at 1:31 PM, Adam Glauser <adamglauser at gmail.com> wrote:
> I have recently joined a small team of developers working on a proprietary
> C#/ASP.NET application.  None of us have extensive experience with version
> control, but we want to get started with it.

So no prior experience, and the primary target is .NET development in
Visual Studio on Windows.  Gotcha.

First of all, using *any* source control tool is *much* better than no
version control.  If it comes down it, use Subversion.  The tools are
good and it's very stable.  Merges suck, but small teams can avoid
those.  Also, *you* could use Bazaar (possibly git too, but this is
something Bazaar was built for) with Subversion as a back-end

That said, if you're starting fresh, you're right, it makes sense to
look at DVCS.

If you don't have a lot of knowledge of DVCS, have a look over the
Eric Sink article: http://www.ericsink.com/entries/dvcs_dag_1.html
It's much more informative than, say, some video of Linus ranting
about how git is awesome and everything else sucks.  (Eric still comes
out in favour it git, pretty much).

(And for even more background, you can read his Source Control HOW-TO,
but that mostly talks about the old, centralized models of version
control.  Still a worthy read.
http://www.ericsink.com/scm/scm_basics.html )

> After doing some reading, here are my impressions of the three main
> contenders.
> Bazaar:
> Focus on ease of use and flexibility of workflow.
> Launchpad has been open-sourced, so we could run our own internal Launchpad,
> which seems like a big benefit.

I've been looking into Bazaar, and I like it a lot.  Using it on its
own, it seems perfectly straight-forward and easy to understand.  It
does its best to make you think you're working in the line model, even
though you have most of the features you'd get from git or Mercurial.
This is both good and bad.  Part of using a DVCS is changing your
mindset, and Bazaar doesn't demand that of you.  If you want to
pretend you're still using something pretty much like svn, but with
this extra "push/pull" concept, then you can.  That makes it easier
for new users to grasp, which is good, but it also hides some of the
value of using a DVCS if your team cares enough to put the effort into

I like it because, yeah, cross platform support is really good.
TortoiseBZR (the Explorer extension) is pretty slow, though.  It seems
like a lot of people turn it off.  I didn't mind using it too much.

Some big features like rebase are still very new in bzr, and I don't
know if they're up to what a seasoned git user would expect.

Support in Visual Studio consists of a very alpha integration.  It
works, and does what I want it to do (track adds and renames), but
it's not easy to get it up and running.  There's no binary release at
the moment, only source.

> Mercurial:
> Larger user base than Bazaar
> Closer to Bazaar than git for ease of use

I don't have a lot to say about Mercurial, except that my initial
impression was that its suppot on Windows was the best of the three.
It's got an MSSCCI-based integration which isn't the best way to go,
but probably better than the others have.

> Git:
> Powerful, but perhaps more complex than necessary.
> Visual Studio integration by way of Git Extensions.

Others can tell you more about why you should use git than I can.  It
has a lot of cachet, and the people I know who get into it really get
into it.  If you're managing a whole lot of source code coming at you
from all sorts of directions, it seems like it's the way to go.  And
if you're happy working on the command line, more's the better.

Windows is not a first-class platform for git.  And Git Extensions is
an add-in, which almost certainly doesn't work very well, because the
add-in interface in Visual Studio is very limited.  It's hard to find
out too much about it without installing it (I don't want to install
it), because it's lumped into the higher profile Explorer integration,
which, again, doesn't give me confidence.

> I've seen some comments that Git can track code as it moves between files.
>  Is this true, and if so, how does this look in practice?  Can the other
> DVCSes do this?

I know Bazaar can't.  I'm skeptical about how well git can.

What makes me skeptical is that I want to run something like 'git
blame' and see the history of that *file* since it was created, no
matter how many times it was renamed or moved.  I don't see how it can
do that unless you tell it that that new file in that directory is
actually that old file in the other directory.

> For the IDE users out there, how important is it for version control to be
> integrated in your experience?

I think it's very important, but then my job for a number of years was
writing IDE integrations for a proprietary ACM vendor.  Most people
using DVCS seem to think it's unnecessary, and get along happily with
the command line.  Having the IDE tracking adds, deletes, moves and
renames just makes my life easier, and avoids broken builds when you
forget to do those things manually.  If you can make sure you're
keeping track of that, then you probably don't need the integration.

I also think it's nice to have visual indications of the state of my
working copy in the IDE, but that's not that big a deal.


More information about the kwlug-disc mailing list