August 2011 - Posts

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…

I am a big fan of productivity and for myself mouse is usually more of a drag than help when coding. While watching a presentation caught presenter using a mouse in a way I never did, and that was quite productive!

The objective was to create an entity for an ORM. Here’s how it went.

First, a code-first entity was created leveraging prop code snippet.

image

Then pressing ALT key and making of selection of “nothing” in front of all the properties public keyword, including the rows with the mouse. Thin blue line on the left represent this “selection”.

image

Last step is to type virtual and we are done. Now all the properties are marked as virtual for ORM’s satisfaction. What a great way of doing it!

image

 

 

 

 

 

Moral of the story – never say never. Mouse can make you productive sometimes as well Smile

A while ago, the team I was part of had a discussion about choosing the best DSCM (Distributed Source Code Management). Two candidate back then were Mercurial (Hg) and Git. We were already using Subversion and very accustomed to VisualSVN in conjunction with TortoiseSVN. Opinions split, time frames never allowed to actually make the switch and so the question remained unanswered: which one is to go with.

While there are a lot of blog posts stating what side to take, I personally went with Hg (partially due to its similarity in work with SVN I was used to). Yet there’s a lot of code that is hosted on Git repositories, and I wanted to access it as well. Commands for Hg and Git might not always have the same name, but the final result is similar. So why shouldn’t one be able to use a single tool to access both types of repositories? And surely a quick search has revealed a way to do so in a very easy way.

More Posts