Team Foundation Server (TFS) is Microsoft's source control management solution. At the Informatics Centre we have been looking into using this to help manage our coding time and project management.
TFS is a feature rich software suite which interacts with an SQL server backend. It provides at its basic core a simple Subversion (SVN) type experience allowing users to collaborate on a project including committing, branching, cloning. TFS has been designed to allow developers to work completely in Visual Studio rather than using other 3rd party software and command prompts which make the development process much more difficult to work in.
The initial setup required replacing a dead hard drive and reformatting with Windows Server 2012 on it. I then hooked this up to the domain and set this machine up as a Hyper-V host so I could manage install and manage the TFS install from Virtual Machine Manager. This gives me all of the benefits of virtual machine management like live migration and failover expansion. I then setup the TFS VM inside the host which again ran on Windows Server 2012.
The process of setting up TFS was rather complicated, although fun. It requires Microsoft SQL Server to store all of the data. Getting this running wasn't easy and I kept having to restart due to missing pre-requisites or problems with the configuration that meant TFS would not work as expected (SQL doesn't work well with domain users when installing). I made good use of snapshots for this:
Getting the TFS software installed wasn't quite as simple as I expected. The Standard Server option installs SharePoint for you and configures it in addition to the most common TFS features. However, the SharePoint install would not work with the latest version of TFS. Nonetheless, I like the overall web management TFS provides. It seems you get everything here managers and developers would need. Below is an example of where a manager can view the status of a task he has set a developer:
The developers can work from inside the Team Explorer view in Visual Studio. Below is a screenshot of this:
I think TFS has a disadvantage in the labelling of functionality. It doesn't always make sense what buttons will do. The installation could be made simpler too. In summary, I believe the functionality TFS provides and the integration with other Microsoft products like SharePoint make it a very good solution for code management in an organisations and a viable alternative from SVN/git.