I'm about to start doing version control and wonder what people are
using. Visual Source Safe has the advantage that it's integrated into
VS and it's free.
Does anybody have any strong opinions on version control and reasons
for them?
I'm the only developer working on the software (multiple projects).
I'd personally recommend bzr. It's a relative newcomer to version
control, but it is distributed, cross-platform, and is very nice; you
can keep a 'trunk' branch (or 'mainline' or whatever you want to call
it) and branch from it to work on various segments of your project and
then fold the code back into the trunk/mainline very easily.
As far as some of the other options that you have on Windows, you can
use Subversion, which is nice, but it does use a database which
(sometimes, though quite rarely in my experience) can become corrupt.
I would say that backups are essential for Subversion, but really, they
are for any VCS. The major difference with Subversion is that you have
to dump the database using a special tool; with bzr you can simply use
mirror branches and have them pull from the main copy periodically.
I've been using bzr for everything I've been working on in the last six
months; I've even moved all of my Subversion repositories to it. I
haven't personally used it on Windows, though I know people who do and
like it. It integrates into the Windows Explorer shell there, as
well. Not sure about IDE integration, but version control is something
that I haven't ever wanted my IDE to do for me in any case.
http://bazaar-vcs.org/
There are other options, of course. There is git, but it is (IME)
cumbersome, and I don't know that it has been fully ported to Windows
yet, at least without the aid of the somewhat heavy Cygwin layer which
emulates a UNIX-like system environment. There is also Mercurial,
which looks like it has a functional port to Windows, but I have never
used it. Monotone is another one that I have heard of, but again, I
don't know about its usability on Windows.
I don't think that there is any real reason to use centralized VCS
tools anymore, though, at least that much is for sure. Distributed
tools are really taking the cake and making life easier for commonplace
(or what should be commonplace, anyway) development tasks, such as
branching and merging. There is a good deal of software out there
using bzr nowadays, the MySQL database server is one that you might
have heard of.
--- Mike