TFS vs. Subversion

Update, 2010-10-23 Note: After reading discussion on Martin Hinshelwood’s blog, I’ve decided to state clear I’m writing here about TFS 2008. Some of the points might not be relevant to TFS 2010.

I’ve been using both Subversion and Team Foundation Server (TFS). Because I first used Subversion and started using TFS afterwards, I had to get used to TFS flavors. I think TFS is great but to be honest there were a few things I missed from Subversion and a few things that really annoyed me when I started using TFS.

So, this is a list of strong and weak points of TFS from the perspective of a developer who switched to it after using Subversion.

Weak points

  • Subversion promotes a very clear view (similar to CVS) on the files tree on the server: trunk, branches, tags. In TFS everything is in one bag – branches are simple directories among the other content of ‘the trunk’. It still looks messy to me.
  • If you want to edit a file you need to check it out for edit so that it’s listed in Pending Changes window after it’s changed. If you edit a file directly in Visual Studio it checks it out for edit automatically; however, if you make the changes outside Visual Studio (you need to change Read-only property prior to that) and forget to check it out for edit in Visual Studio the file is not listed in Pending Changes window. Consequently, the risk of not including that item while making a check-in increases (I personally experienced that a couple of times….)
  • It’s dedicated to Windows platforms only, but this is hardly a problem for a team who uses Visual Studio icon smile TFS vs. Subversion
  • It’s not a free tool
  • Complex installation
  • Update, 2010-08-22 Lack of switching feature. With Subversion I could easily switch between trunk and branches / tags, still using the same source directory. The action was straightforward and quick. On TFS you need to make a full check out of the other branch, which is longer and requires additional actions (e.g. IIS settings for new virtual directories)
  • Update, 2010-10-23 Poor support for revert (roll back). It’s not that easy to rever a check in (especially if it includes lots of files). Official roll back instruction sounds like a workaround… Another resource: read more

Strong points

  • Integration with Visual Studio
  • Integration with work items (bugs, tasks, scenarios, test cases, etc.) – in other words your team needs only one tool (Visual Studio Team System) for all project chores. This actually promotes TFS to be a more powerful tool that a source control only.
  • Shelving changes – ability to set aside pending changes temporarily in order to switch to another task – read more
  • SQL Server backend (e.g. backups)

To sum up, both Subversion and TFS are powerful. There’s not an easy answer which tool is better. Despite not giving a direct judgment, it really seems to me TFS is better for bigger projects – one tool needed for all kind of project tasks (work items, source control, bug tracking, planning). What are your thoughts?

P.S. Probably the list above would look differently if I first used TFS instead of Subversion icon smile TFS vs. Subversion

7 Responses to “TFS vs. Subversion”


  • Hi,
    Thanks for comprasion. But i want to correct something.
    You wrote that,
    “If you want to edit a file you need to check it out for edit so that it?s listed in Pending Changes window after it?s changed. If you edit a file directly in Visual Studio it checks it out for edit automatically; however, if you make the changes outside Visual Studio (you need to change Read-only property prior to that) and forget to check it out for edit in Visual Studio the file is not listed in Pending Changes window. Consequently, the risk of not including that item while making a check-in increases (I personally experienced that a couple of times?.)”. But if you will setup TFS Power Tools, you don’t need to use Visual Studio. At Window Explorer, you can see which files are binded to a source control or you can check-out or check-in. Just install Power Tools :)

  • There are a few relevant comments added to this post on republishing on DZone: http://dotnet.dzone.com/news/tfs-vs-subversion Worth reading, good points noticed.

  • Hi Jarosław,

    TFS is a “latest-and-greatest” offering, and it’s worth noting that Subversion is not.

    It would be worthwhile to compare TFS to a current system such as Git or Mercurial, against which it becomes glaringly clear (in this programmer’s opinion) just how handicapped TFS is in every way.

    And if you’ve never used the above-mentioned systems, I submit that the slight learning curve involved is a much better use of time than wrestling with an archaic system like TFS.

    Best,
    Ron

  • TFS is not great. It’s a pile of donkey shit for the reasons you listed and more.

    I can’t freakin just get latest to another folder without having to check in existing code. TFS cries when things aren’t checked in which I’m not ready to check my stuff in…this is stupid.

    Subversion leaves you alone. You do what you want locally and when ready commit and merge. If you wanna branch, branch…it’s not causing so many fits.

    Also TFS doesn’t commit the whole tree, just only the files you change. Good luck trying to get the whole copy of whatever project you last committed to.

    TFS sucks balls. And that’s that. Anyone who likes it only likes it because they have not used another source control such as Subversion, GIT, etc.

    Just today I wanted to repoint my stupid workspace binding from my local folder to another and get a fresh checkout of the project so I could fix something and check it back in then repoint the mapping back to my folder I was working on for that project. Good luck with that, TFS wines and fails when trying to get latest to the temp folder you wanted to work off of briefly cause it’s your mommy and keeps tabs on what you were doing in the other folder where you were working before saying you added crap and so I’m not letting you check out a fresh copy to another folder. I am TFS’s bitch. So now I have to go through the pain to shelf (which is painful in TFS) or just create a whole new workspace which is ridiculous just to get a fresh copy and fix a small thing that was committed in changeset xxxx and then continue working on my other local copy and carry on with the copy I was working in .

    This is quite near impossible to do in TFS without a migraine.

    Subersion (Tortoise UI specifically for .NET) isn’t easy to get at first but once you get it everything is 10x easier than crap TFS…and less pains. I had none of these pains with Subversion, it’s a joy to use and is unobtrusive. TFS is your mommy, there watching everything you do and saying naughty when you are doing something it doesn’t like in the real-time moment that you’re doing x and x with it locally. I can’t believe MS actually can sel this pile of crap.

  • “Integration with Visual Studio”. Well so does Subversion!….it integrates as well with VS http://www.visualsvn.com/visualsvn/ or http://ankhsvn.open.collab.net/
    so that’s not really a strong point for TFS.

    However most devs I know including myself prefer using the windows explorer context menu (Tortoise) and do not even care if it’s integrated or able to work inside VS. The experience is wonderful just using windows explorer and the Tortoise Options in the context menu for your file system.

  • Dave, I’m not a big fan of TFS (having worked only with TFS 2008; heard 2010 is much better / convenient). I agree there are plenty of features that might work better or simply be easier in TFS. However, TFS is much more than Subversion, i.e. it’s not only source code repository, which might increase it’s value to the team.

    Either way, whichever tool you choose among the best and more popular ones (git, Subversion, TFS, …) saying it’s crap sounds to offensive and too exaggerated to me. In this particular case, many dev teams use TFS and they succeed to deliver product of good quality on time. It’s not the tools that make superb teams, but the people themselves – that’s what I believe in. Finally, I believe sometimes it’s no use sticking to one particular tool in all types of projects. In a particular project one tool might be / fit better than the other, despite it’s not as good in some aspects as the other ones.

  • Today’s grieve with TFS:
    I can’t select multiple changesets and easily see a total list of all the files and changes there. Gaaah.

Leave a Reply