+9  A: 

Sourcegear's Vault is a great option, it runs on SqlServer and it has been around for many years. I would not use any version of VSS (Visual Source Safe).

Erick Sgarbi
Vault is also free for one developer (or at least has been in the past).
Eric Willis

I dont see why the fact that your one developer changes anything on the source control issue. I would follow the same system (in fact I do on my solo projects). I use wush.net (svn and trac) in those cases. It's fast to set up and dont require that you yourself do or know any server issues. I recommend you use something like this.

Alexander Morland
+10  A: 

I would definitely recommend git

Works great for both big and small teams. Only drawback is poor native windows support. Although it works fine for me in Cygwin. There also exists a native windows port.

Some of its benefits:

  • Excellent support for a non-linear work flow. Its branching and merging is far better than eg Subversion.
  • Good tools to navigate your repository
  • Handles large projects well.
  • It is not possible to modify the history without changing the cryptographic signature of your repository
  • With its non monolithic design, it is easy to script.

Some people find that it has a steep learning curve. But once you understand it you can do almost anything you would want with it.

Thomas Watnedal
+6  A: 

I use Mercurial. It runs a treat running stand alone on my Vista development system with no other dependencies required. I use the command line but there's also TortoiseHG to integrate with Explorer.

Two comments:

  1. There are other tools which probably integrate with VS better. I think Subversion has nice VS plug ins.
  2. The benefit of a separate server is that it's a nice backup of all your work in case your HDD dies on you etc. so discount having one.

Edit: @Slartibartfast - if you just want to run source code control on a single machine a Distributed Source Code Control tool like git or Mercurial is ideal since they're designed to run complete repositories on a machine without the overhead of a server. The fact that you never connect your repository to anyone else's to push and pull changes doesn't mean that tool won't be right.

Dave Webb
+1  A: 


I'll ask an obvious question here.

What system, if any, does the customer use?

You don't want to complicate things going from SVN or CVS to Clearcase, for example.



Rob Wells

Well, for start, you don't need distributed one :) I'm not sure what this physical part means, because you could put svn server on your own machine in little trouble.

On the other hand, NetBeans have local history module that logs all local changes of a file. Maybe something like that would be enough for you if Visual Studio have something similar.

+4  A: 

A source control system doesn't care if there's only one developer involved :)

I would recommend that you use a source control system that you've used before and liked.
If you like vs 2008 integration of the source control system however I would go with TFS although I never had the experience to set it up but it shouldn't be so hard.

Another possibility is to use svn (you'll find some servers on google) and use Tortoisesvn that integrates into the windows shell and is nice to work with.

+6  A: 

You can use Vault from SourceGear, the replacement tool for visual studio source safe. The IDE is integrated in Visual Studio.

The tool is free for single user.

More information: http://www.sourcegear.com/vault/index.html

+11  A: 

Go for subversion and tortoiseSVN, you don't need to set it up on a server.

  • Costs are zero
  • The subversion documentation is great and fun to read
  • tortoiseSVN is a very convenient client
+7  A: 

Subversion has very low barrier to entry.

TortoiseSVN is a free client, and integrates into your explorer- i.e. in right mouse click menu.

The repository can be just a directory somewhere on your PC or on a network drive. Backing up just means zipping up this directory

There are a few plugins to Visual studio for Subversion, AnkSvn is one I have use, it is free.

Subversion is a good choice for one developer.

Frep D-Oronge
+42  A: 

I would use Subversion (in fact I use it). SVN is:

  • free,
  • good enough,
  • simple,
  • works fine on Windows (and Linux too),
  • a lot of people use it so it's easy to get help,
  • can integrate with most of IDEs i.e. Visual Studio (i.e. ankhsvn or VisualSVN -- more info) or Eclipse (i.e. Subclipse -- here someone asked about that).

I would strongly recommended separate machine to source control server -- if your box dies completely you don't lost your source control repositories.

There are some companies which host SVN repositories.

Here are links to SVN (client and server) packages for various operating systems.

Good luck!

Grzegorz Gierlik
Look into Visual SVN (http://visualsvn.com/) for the server part if you are using Windows. The Server is free and makes setting up a repository EXTREMELY easy. I have also heard their Visual Studio Client works very well, and it is $49.
Redbeard 0x0A
I'd use a hosted SVN service and tortoise svn client.
@Grzegorz Gierlik updated your link. this project is now under apache
While the question is ever-timely, this answer is getting long in the tooth. The 2 most popular distributed source control systems (hg and git) have outgrown their infancy and—when combined with a visual client (pick your fave) and either http://bitbucket.org (for hg) or http://github.com—provide a solution that's ideal in its combination of simplicity, flexibility, and scalability. See the git- and hg-related answers below for more!
+2  A: 

I'd recommend two things:

First up, that other server - what happens if your machine dies? the house burns down? etc. Having it on another machine is a good idea from a redundancy point of view.

The second one is WHAT:

If you are very familiar with visual source(un)safe, think about SourceGearVault. It's VERY nice, very fast, and very much a vastly improved "clone" of VSS (ie works the same way from the users POV, not under the hood). Needs SQL server and windows tho (it's .NET + SQL server). Free for 1 user.

Of you are not, then I suggest you do one of two things:

First, get VisualSVN. It's great, works with VS2008 really well. Second, if you MUST run it locally, get VisualSVN server (free!). Make sure you have a good backup plan. Runs on XP/2003/2008/Vista etc.It's just Apache + SVN, under the hood, so it just saves you on the setup - took me 5 mins to install and have it running.

OR, and I prefer this one:

go somewhere like Unfuddle, Dreamhost etc, and get hosting for SVN. It's private, it's fast, and most of all - it's OFFSITE. My dreamhsot account, with something crazy like 500GB of storage and 1-2TB of transfer/month costs about $6/month! There are others which do SVN hosting + bug tracking etc. Look around.

But yeah - SVN is the schizzzznit.you could create a local repository, but I like having a remote, backed up server.

TFS is total, utter overkill for 1 developer (or <5 IMO)

Nic Wise
+33  A: 

I would also recommend Mercurial. It's command set is much like the one found in Subversion, so the learning curve is not that steep. As mentioned earlier, it's designed to run locally, but it's also easy to share/merge changes across computers, or even just push it to a remote server for backups.

It offers excellent tools, like TortoiseHG, and it has good plugins for NetBeans and Eclipse. It also runs natively on Win32, as it's written in Python.

If you don't want to set up a server yourself (for backups, e.g.), there are free hosting providers available; there's a comprehensive list on The Mercurial Wiki.

+1, for one person, I'd absolutely recommend Mercurial over Subversion.
Jack Leow
I just got on board with Mercurial (had been using SVN). Mercurial is definitely better at managing branches and merging.
Scott Whitlock
+1  A: 

I would recommend Subversion since it's for single developer and I assume that you're not doing complex merging and lots of log/history checking.

Seems like many people are using http://svnrepository.com/ for their hosting. It comes with Trac and even Git if you need it later.

+8  A: 

I'm surprised no one has mentioned Perforce. It's free for 2 people, blazingly fast, and integrates with VS. Also source server has bindings for it by default.

In addition to source control, it really is worthwhile to complete the loop and setup a symbol server and a source server, so that you have simple debugging of anything you've shipped (e.g. no more searching for pdbs or source that match the binary). Both source and symbol server are completely free and supported in VS since 2005.

Steve Steiner

I would recommend using subversion. Many have recommended using a seperate box as a server, in case your dev machine dies. What happens when the SVN server dies? The answer here is that no matter where you choose to run the server, ensure you always do frequent backups, possibly automated daily to some secondary, preferrebly offsite machine.


I use Perforce as well for my own personal stuff, mainly because we use it at work. There are emacs bindings for it as well, so you can sync, check stuff in or out, etc. all from within emacs.

Graeme Perrow
+1  A: 

Some good answers here.

I want to re-iterate the suggestion to use a separate computer to host the source control server, although it doesn't have to be a dedicated machine. It could be your Windows Home Server box, or some other server you're already running. Or it could be a virtual machine hosted on some other server. Whatever, just make it separate from the machine(s) where you write code.

I also want to suggest that you get a good backup discipline for your server. Something nightly at least; hourly if you can. Back up to a dedicated device (like an external hard drive) or something offsite (a server in your cousin's house in another state) or in the cloud (Amazon S3). Remember that your source code is your key asset; take care of it!

Jay Bazuzi

I recently moved my studio from Subversion to Perforce and put some notes about it, sort of a postmortem, on my blog here. Hope it's useful.

Scott Bilas
+3  A: 

There are two possible solutions for your problem: centralized VCS or Distributed VCS (DVCS).

Centralized VCS like Subversion would satisfy you feature for committing and browsing the log. It also enables you to safely store your repository to another computer which should be one of your major goals as hard drive failure is always a possibility. However, using Subversion the history still resides only at the central location making it vulnerable and you stated that you do not want to have another server.

Distributed Version Control Systems (DVCS) such as Mercurial and Git enable you to do more complex operations on your repository. With both of those tools the whole repository resides with the same computer making it bit easier to make backups and using the repository with another computer e.g. laptop. While Mercurial might seem complex at first the operations you would use with subversion are pretty much the same with Mercurial. Therefore there is no extra overhead to get started if you already know Subversion and you can easily use more advanced features of Mercurial later.

You should be able to find online repository service for your Mercurial repository enabling you to make easy backups and do collaboration some day if you have the need for it.

My recommendation is Mercurial with TortoiseHg.

Aku Ankka
+2  A: 

A number of the posts advocate putting the repository on a server because it provides redundancy. I don't think this is all that helpful for a single user. Using a separate server machine adds a lot of complexity, but it doesn't buy much redundancy: if you lose the server machine, you still have the current sources on your development machine, but you may have lost ALL your history. Putting the repository on a server does make sense if that server is being regularly backed up. Using an exernal hosting service for the repository can provide storage redundancy, but you're at the mercy of the external service AND you need an internet connection to access the repository. If you use an external host, make frequent backups of the repository that you keep control of!

I would presonally recommend TortoiseSVN using a local file based repository. Just make sure you backup the local repository to a second machine or external media (such as CD-ROMs) on a regular basis.

Stephen C. Steel
+1  A: 

I realize that cost isn't a problem but a nice free solution that wouldn't involve checking in and out would be to host the code within Dropbox by doing this you'd instantly get versioning and backup which are the main features that a single developer system would provide.

I do a variation on this, which is to put my SVN repository in my DropBox folder, which works as long as I don't commit from two locations at the same time (which I don't).
Be aware that the free Dropbox only keeps 30 days of history.
Jeanne Pindar
+2  A: 

Bazaar is a good version control system. I like to use it for my linux configs because you don't need to create a separate repo.

+1  A: 

A while back I did a how-to blog post on using SVN with only one developer. I called it Single serving source control

+1  A: 

I've been working with Bazaar now for a few weeks and really like it. I'm a linux developer so don't really know much about Tortois but if you like it you should know that there is a Tortoisbzr

+1  A: 

Hands down I would use git, and I believe many reasons why a single-developer would like to use git are hinted at or described in git magic