We want to put a number of our in-house projects under version control. Our projects are C# .NET applications and assemblies. We originally decided to go Microsoft all the way (as is the norm around here), and tried installing Visual Studio Team Foundation Server. To say the least, it was way more trouble of trying to get a successful install than it's worth, and I'm afraid we don't have a entire server to dedicate to TFS itself, as the installer seems to insist.

We also considered a generic solution like Subversion or CVS, or possibly some kind of free online hosting that doesn't make our source publicly available under some license like Google Code appears to. Does anyone have any suggestions for us that would best fit our in-house MS environment? We'd also get some benefit out of some kind of project management tools if they were nicely integrated in to the solution, but this would only be a perk.

I should also mention that we haven't entirely ruled out TFS, but it's looking like a pain, so anything you guys have to say for or against it would be helpful.

+8  A: 


The Collab installer works well.


Subversion rocks. If you don't want to run it yourself, use Google Code or Assembla (both free).

There's also a one-click install for setting up an SVN server, but I don't remember the name off the top of my head. It should be easy to find on Google.

FYI: Forrester recently rated Subversion as the best standalone source control product.

+5  A: 

Another one-click solution is VisualSVN Server.

+2  A: 

CVS is better than VSS, but still about two generations behind when it comes to version control. SVN is a perfectly fine choice, and works well for a lot of people. You may want to check out Sourcegear's Vault. It's a good choice if you're looking for a version control system that integrates nicely with the Microsoft development environment.

Chris Upchurch
+8  A: 

Subversion + AnkhSVN as VS-Plugin + TortoiseSVN ist the best for me.

Eduard Wirch
This is the same setup i use. I run VisualSVN server for the one click installer though.
+1 that's exactly my setup, too. works great.

Try installing TFS on the server anyways. Just make sure that the server is backed up first! If it doesn't work the way that you would hope, you can always uninstall it. Other then that, I would recommend SVN + VisualSVN.

Side Note: At least with SVN, you can hook it up with a wiki/bug tracking system like Trac that would be total kick ass in house :)

+4  A: 

I've really liked using Vault. We actually have the web service running on one server and the database backend running on another to spread the load.

[snip from the site]

Built for Reliability

Vault was designed to ensure the reliability of data. All repository data is stored in a SQL Server database.

Atomic Checkins

You can checkin a group of logically-related operations as a changeset, and the checkin operation is atomic. The entire changeset either succeeds or fails. Your repository is never left in a half-baked state.

Familiar User Interface

SourceSafe users can begin using Vault with no learning curve. The terminology is the same. All major VSS features are present.

SourceSafe Import

Vault includes a SourceSafe import wizard that can move all your VSS data into a Vault repository. Every version of every file is imported, including change comments. Even shares and pins are properly maintained.

Remote Access

Vault was designed to work well over the Internet. All communication between client and server is done over HTTP, familiar and friendly for network administrators. Compression and binary deltas are used in both directions to minimize network traffic. Configure IIS for SSL support to keep your data secure.

Advanced Features

Vault brings smart branching and merging to your team, including our Merge Branches wizard. And check out our exclusive Line History feature (think Blame on steroids).

Clients for Linux

The Vault command-line client is fully supported and tested on Linux using Mono.

IDE Integration

Vault integrates seamlessly with both Microsoft Visual Studio and Eclipse.

[/snip from the site]

Dan Williams

I've been using a hosting provider, Assembla for the last few months and I've had no problems using their source control (Svn), issue management, and wiki. I would recommend this only for smaller teams because may lose some control vs. hosting it all in house. I've also used Team System and Svn in-house and I personally prefer Svn with Visual Svn as the client. Svn was a little tricky to setup in a Windows environment early on but there are plenty of how-to's out there now so you probably can't go wrong with that solution.

SaaS Developer

I too throw my vote in for Subversion.

However for the user client, I highly recommend SmartSVN. Its not integrated with Visual Studio, which may be confusing for developers use to SourceSafe or TFS, but it makes up for that with an impressive set of features.

+20  A: 

I've used Subversion in a number of cases for both .Net and Java projects and it has managed quite well. As it was designed as a replacement for CVS, the previous tool-of-choice for open-source projects, it got a great deal of traction and there are a lot of tools available to make working with it a pleasure.

For a start, it doesn't require a dedicated server and will run anywhere you decide to place it, it installs it's own file-based database system (Berkely db I think from memory) to store files so no large database server is required. For basic access to the source code for updates and commits you can use the command line (which is great for automation), but there are several tools you can use to make things easier. Personal favorite of mine is TortoiseSVN which integrates subversion commands into windows explorer, enabling you to manage source code from the directory listing. (Wonderful when combined with QTTabBar on large projects). Some of my co-workers also swear by Ankh, which is a plugin that puts subversion controls into visual studio itself. Apparently the last few versions have been quite stable and pleasant to use.

It doesn't directly integrate with project management tools that I know of, but the generic nature of it allows all sorts of information, including design documentation and project plans, to be stored in it. It can also be used as the base store for some communications intranet systems, such as confluence, which can be useful in project collaboration environments.

I hope that helps!

nice explanation
"It's own file-based database system" it's either flat file (recommended) or Berkley db, see
Duncan Smart
Even back in 2008, the default repository format was fsfs, flat files.

The integration between the source control and work items (bugs, issues, requirements) is a very compelling reason to use TFS. However I'm in the lucky position of not having to administer TFS and may have a different view if I did.


Our team uses Subversion via VisualSVN Server, which is extremely easy to get running. We use TortoiseSVN as a client on our development machines.

When we approached the decision of which source control system to use, we initially looked at Team Foundation Server, but it was way too complicated for our current development processes (read: not formalized yet). We just wanted to get all of our source into a spot where it was versioned instead of XCOPYing to our CYA folders.

One thing to note, however, is that sometimes it gets confusing using TortoiseSVN alongside Visual Studio. A lot of our team members like to move/rename folders and files inside the IDE, which wreaks havoc the next time they commit/update. With that said, you may want to look at products that integrate into the IDE (such as VisualSVN).


TFS is actually quite easy to install and maintain imo. Our server installed fine with no issues at all. The one thing that could be a bit better is Account and Security management, but once you are used to it, its a breeze.

Besides that its really nice, as mentioned the integration, but its also very fast i find for source control. But then I was used to VSS and i think anything was faster than that. I also ind it nice that using it I can better collaborate with my customers on projects, and they can get more feedback without necassarily having to be an onsite customer. And because it is all in one, its actually easier to learn . (I use it for pretty much everything on a project, from source to docs, tasks, bug tracking, requirements, planning, etc etc etc, i am sure you all know what it does.)


My favorite source code control system is ClearCase, both as a developer and as an administrator. Since as a developer you'll only really be using snapshot views, the "LT" cheaper version is more than sufficient. The only downside is that their diff-merge tool isn't as elegant or fully featured as it ought to be. We used Araxis and integrated it directly with ClearCase so that all diffs and merges were done with Araxis.

I've also had good luck with SourceGear Vault. It's easy to administer, and their diff-merge tool works well (and it can also be used standalone). Eric Sink is their CEO, and he's a straight shooter.

On the open source front, Subversion is the easy winner. You'll want to pick a front end for it, and there are several suitable ones from which to choose (many of which have already been mentioned). You can easily set it up for single-machine use if you're doing Lone Ranger work, and it's not much more difficult to set it up server-style for team efforts (which is the preferred way).

Any of these systems mentioned have sufficient command-line ability to play nicely with any build tools you choose (ant, nant, whatever), and while the core paradigms of each are slightly different from each other, all are easily mastered with a little effort. All are also integrateable with most IDEs, but I'd verify that your chosen IDE works your chosen VCS before committing.

Definitely stay away from VSS. It's not as durable as it ought to be, and it's missing some enterprise class features. It might be ok for simple mom-and-pop work, but don't trust it for larger teams or if you decide to do any serious multi-branch work.

Ed Lucas
+1  A: 

At work, we use SourceGears Fortress. At home I use SVN. Both work nicely. Fortress seems to get flakey when you drop network connectivity (e.g. after a hurricane) and some other things that can be annoying, but day-to-day operations both seem to run fine.

The important thing to think about is do you want exclusive check outs or not.

Both offers different repositories.

The style of source control is different. Fortress will auto-checkout something while SVN will not -- it lets you do the merges and such.

Fortress is NOT free and is NOT cheap while SVN is free.

Personally, given a choice I would choose SVN. I have used CVS however I like how SVN handles blobs better -- since I like keeping a full db export in to the source control (in a seperate branch though) since it allows a central location for restoring mistakes.


VisualSVN + Tortoise

The first is the plugin to manage svn from visual studio but it needs the second to do all of its work, first one is not free, but its worth the $49 that costs, the latter is free.

The difference is that TortoiseSVN is a shell extension (you get your context menu options when right clicking on the desktop for exmaple) and can be used outside Visual Studio so it is not made for integration on any IDE. VisualSVN its just a wrapper for Tortoise that will let you use it from inside Visual Studio and believe me, it is really good.

I dont know if SVN is worst than commercial solutions but sure its a thousand times better than Visual Source Safe which gave us headache when we were using it.

Gustavo Rubio
+1  A: 

Subversion, Tortoise and Ankh.


If you're up for taking another shot at TFS, look in to running it in a virtual machine. That should solve the dedicated server problem for both the software and your budget. Just make sure it has plenty of RAM.

The integration of TFS in VS is nice... don't give it up too easily.

Jay Bazuzi
+1  A: 

I really like Subversion although it does have its quirks. An article on Rick Strahl's blog that explains in detail a Windows based install turned me on to it. Here's some linkage:

Setting up and running Subversion and Tortoise SVN with Visual Studio and .NET

Running VisualSVN Server for Subversion Source Control


I have used VSS and VisualSVN (VSVN). I have switch back to VSS due to problems with corruption of the project files by VSVN. My team has had problem with merging when more than 1 person adds new files to the project with VSVN and there has also been corruption problems with refactoring changes. At the time when I tried Ankh over a year ago it did not work well, but I hear good things about it's plugin of late...

Whatever choice you choose, make sure it integrates with Visual Studio well and that it can handle addign new files by multiple people, moving fodlers and files as well as refactorign a class that is used in more than 1 project. The last thing you want is for your source control system to corrupt your source!

+1  A: 

I work on a small project and we use Subversion (via VisualSVN server) and Ankh for Visual Studio integration. It works perfectly for what we need and the price is right too :)

We also use Trac for app lifecycle management which integrates perfectly with SVN, and adding in post-commit-hooks for the repository allows us to include things like 'fixes #123' in our commit messages and the corresponding ticket is automatically updated (e.g. closed or set to a pending/assigned state).

There's some online SaaS tools such as Unfuddle which provide the same features but you dont have to worry about the management :)

Matthew Savage
+13  A: 
Ric Tokyo
I looked in to GitHub, but it looked like it required your project be open source. Is there an easy Git server for windows?
Hi, what I do is set up an ssh server to hook Git into.
Ric Tokyo
lovely - thanks for the Git Extensions link!
+1  A: 

Git + Git Extensions + Visual Studio 2008 works very well for me.


Give a try to Plastic SCM.

  • Really strong branching and merging (merge tracking, true renames)
  • Visualization: from branch explorer at the repository level to 3D version tree at file/directory level.
  • Integrated with Active Directory/LDAP and ACL based security
  • Performs great under heavy load
  • Built-in tools to review code, view changes and so on
  • Storage based on relational databases: MySQL, SQLServer, Oracle, Firebird
  • It's distributed like Git/Mercurial