Wednesday, August 31, 2011 9:39 PM Sean Feldman

TFS

There’s no perfect software. If it would exist, we’d never build a newer one.

There’s also software that should never be built from the beginning. TFS is one of those.

I’ve used it for the past 3 months, and it was way far more than just an unpleasant experience. I have previously worked with VSS, TFS, and Mercurial. I am somewhat biased, yet towards proper work experience and quality of tools.  These are the issues that I have had with this software.

1. When getting latest of the project, the UI doesn’t show what’s coming down. In order to be able to see it, one has to go through “View History” on solution, which shows changes on a solution file only. After than, and extra step is to remove solution (.sln) file from the path and refresh to see the log. Possibly there’s another way, but boy this is painful.

2. Changed password on TFS server caused VS.NET 2010 to freeze.

3. Renamed and committed file was reported as missing on a following commitment.

4. File marked as checked-out despite undoing changes (this is one of the biggest issues I’ve had with TFS. The notion of checking file out is so native to old and ugly VSS, that it just felt like going years back into dark ages).

5. Online/Offline explicit concept – horrible. Great if you work in the office only and never work out of office. But when you do, it just becomes an annoyance.

6. Going online/offline requires to re-enter credentials. Really? Why not to keep it optional? Why not to allow credential saving? The tool is supposed to work for you, not against you. Big deal you say. Well, when you work with external (to organization) TFS server, and have to enter domain_name\user_name and password that is for security purposes generated as an insanely sequence of random characters – it is painful.

 

7. Remember how VSS one day would just loose your commits? Same feeling you get when TFS doesn’t detect changes done “offline” and throwing this message at you (yes, laundry services where required at that moment).

image 

8. Non intuitive UI (some commands are in context menu, some in toolbar menu, like Exclude file). You can’t call VS.NET 2010 interface “a lick-able” UI, though TFS is complete fiasco on that. A good example – select all files for commit (highlight all files, and click spacebar).

image

9. Merging conflicts is cumbersome (non-intuitive UI, file marked as in conflict, and just opening it resolved it, believe it or not!?!).

10. Bulk checkout when unneeded – edited ASCX file, but code behind AND designer files were “checked out” and committed… old good VSS days bubble up in my head.image

11. Explorer based visualization doesn’t work when you are offline at all, something that other tools providing.image

12. Undo Pending Checkins not always actually does what it claims to do… Surprise, surprise.

13. Can’t search comments history. Wow.

I can go on and on, but at this point it’s enough. As for our group – we won’t utilize TFS after this project. As for myself, I will not touch this thing that can’t even do one thing, but do it well. Yes, it’s coming from MS, yes it can manage project, items, etc. But if it can’t properly serve the sole purpose it was created for, what’s good in it then? The good part - there are plenty of alternatives (SVN, Hg, Git, etc.).

Update 2011-10-11

14. Today it just blew in my face when I tried to commit changes. Apparently, the database behind the monster refused to cooperate with the message “Database is full. Contact your administrator”. Wow, for the whole time I’ve used Subversion never I encountered a message/issue like this one. Great job, TFS. Not to mention wasted time till the issue was fixed by system administrator…

Comments

# re: TFS

Thursday, September 01, 2011 9:08 AM by Josh

For issue #1 open your output window and select "Source Control - Team Foundation" it will show what was changed.

# re: TFS

Thursday, September 01, 2011 11:50 AM by Sean Feldman

@Josh,

Thank you for noting that option. Unfortunately, I was not clear enough as per why I was looking for that functionality.

The idea behind notification is to be able to act accordingly. When you see that a certain file was modified, you want to compare changes. With Output window you cannot do that, making Output window for Source Control - Team Foundation absolutely useless.

# re: TFS

Friday, September 02, 2011 1:25 PM by Chris May

I run a team that uses TFS and am currently considering moving to Hg as I, like you, have found that TFS seems to get in the way a lot more.

The 1 big item that kills me that I don't see on your list is that, once you are "Online" you can't go "Offline" without closing the solution and reopening it (or the use of various 3rd party tools/hacks).  

On a few of your items, maybe I can shed some light (or perhaps just tell you stuff you already know).  

On 7 with the "offline files", I believe VS is just looking for files that are marked as read/write, as it uses the readonly->read/write as a poor mans "offline checkout" when your solution is offline.  So typically for me when I go online, it basically just shows me a list of all read/write files, and then it compares those against what is in TFS.  Also, if you solution isn't in TFS and you add projects to it, I don't think going online will find that as a change.

On 9, merging is kinda cumbersome, but the situation you describe is something that could happen.  I'm assuming when you say opening it resolved it you are talking about opening it in the conflict resolution window, or the diff window.  This is true, but only because TFS doesn't require you to address every conflict in every file.  If file1.cs has lines 1-3 changed in /Main and I change lines 10-11 in /FeatureX and then merge, it will be a conflict, but it will also be a conflict that TFS would allow for me to "auto resolve".  If I just click on the conflict to view it, it automatically shows me the "auto resolved" version in the bottom (merged) window.  Clicking OK at this point simply saves the merged version and thus resolves the conflict.

10, designer files and code behind files will get automatically checked out if you edit the ascx because changes to the ascx can product auto-generated changes to those other files.  If you checked out the ascx outside of the solution (using team explorer) you wouldn't see this same thing happening.  It only happens in the context of the solution.  Also, if you didn't make any changes to the ascx that caused the code behind or designer files to be changed, then even though you are checking them in, it will simply realize that they were not changed and only keep the ascx changes.  If you go back and look at the changeset after committing you'll see that only the .ascx change was included in the changeset.

I've been working with mercurial and I feel it does a much better job of getting out of my way and letting me do my work, especially when you take into consideration all the offline/online/vpn-connection-to-TFS-needed-to-do-some-stuff issues.  

# re: TFS

Friday, September 02, 2011 4:32 PM by Sean Feldman

@Chris,

Thank you for the comment. You just said what I couldn't - TFS was getting in my way of doing work :)

# re: TFS

Sunday, September 04, 2011 1:04 PM by Josh

@Sean

There is a pending changes window that shows you files that you have changes in and that a new version exists on the sever. You can then compare what the server change is, compared to yours or the previous version, etc.

# re: TFS

Sunday, September 04, 2011 3:19 PM by Sean Feldman

@Josh,

You are right, with several mouse clicks and shortcuts I will get to what I need, but it's just "noise" and really getting in the way of working. And if this would get resolved, believe me, it's not the major. TFS as a SCM system in my opinion is weak. I sincerely don't care about it's capabilities of managing agile project, bugs system, etc. if it can't do what it was built for and do it well.

At this point I am disqualifying the tool for my use. Maybe someday it will get to the point I would consider it, but till then I will stick to better alternatives.