I just could not find anything about TFS that was, in a professional sense usable.
My summary of TFS:
- RCS - it loses code changes. It is also difficult to use, and has a merge-phobia, but the corruption thingy is kinda a slam dunk. Subversion is way ahead and hey ... it keeps your code changes.
- Project Management - Notepad is better.
- Build system - works but is difficult to manage. TeamCity is much better.
- Integration - Best described as 'share the pain'. Other, non-Microsoft, tools integrate as good. e.g. VisualSVN.
Details below. If your going to read further either you find it hard to believe Microsoft could do such a thing (yea, me too), your a Microsoft basher looking for a fix (go away!), or you need know the experience to avoid it.
My experience with TFS for revision controls was .... well ... it doesn't work. It is that basic. Well actually it is worse, it silently drops changes. Yep, a revision control system (RCS) that actually looses code. Hard to believe, and we were so sure that nobody could release such a bad RCS that we thought that it had to be the way we were using it. But no, check in your changes, then update and guess what? Your changes are gone!
That TFS cannot reliable keep code changes is sufficient to just forget it and move on. But I suppose that may be fixed. Trouble is that this dude is just way out of its league. TFS's idea of a merge conflict is that the file changed
TFS is merge-o-phobic.
Working with a build system:
One real attractive feature with TFS is that it offers the ability to compile and run all tests on a build system before accepting the commit. Nice ... but ....
It works, most of the time. Trouble is that TFS's merge-o-phobia kinda negates this feature but ignoring that TFS sometimes reverts all of your code when you do one of the commits. Not always mind you, and it does not tell you if it did. Surprise! If it does, and you realise it, well you just have to go make a coffee while the build system decides if your code can go it. That down time is optimistic :-).
For Project Management
TFS is just fine if your project's always go exactly as planned in a gantt chart. So why do you need a project management tool?
I'm serious when I say that notepad would be a better tool. Excel would be far better, and VersionOne just awesome.
For what is called 'agile' style project:
- Burn down reporting does not work.
- Move a story to a different iteration and the tasks stay behind. Hey try to do iteration planning with that!
- Story prerequisites are meaningless. You can put a dependent story in an iteration preceding it prerequisites.
In the end we gave up and now use: Subversion with TortoiseSVN and VisualSVN, and TeamCity. We can deliver working functionality more often now as we can spend more time coding features and less time working with infrastructure.
But if subversion ain't for you as you need something real expensive with lots processes to be sure to be sure that you really are going to commit that code then I can say that TFS is even worse than ClearCase. ClearCase does not loose code changes. It may slow them going in but it does not loose them. And ... trump this ... ClearCase is so much more expensive.