Monday, August 20, 2012

TFS... meh.

I've recently switched jobs and am settling in to a new work environment; learning new practices and procedures. One new thing I've been exposed to here is using Team Foundation Server for source control. I had heard it was a huge improvement over Visual Source Safe (which wouldn't take much to accomplish) but that was about the only comment I'd get from people using it.  Now that I've had a little bit of time to try it out I'm beginning to form opinions.  My first impression was that TFS has a lot more to offer than just source control and if a team were taking advantage of those additional features (like Team Build, Project Management Features, etc.) then I could see the advantages of it.  Unfortunately, just as a VCS tool it leaves something to be desired.  I'm planning to leverage Team Build and bring some continuous integration into play in the new environment here but that will be fuel for another post.

TFS First Impressions

Like the title of this post says, my general first impression was just that, "meh".  There was still a flavour of VSS with all the locks and how I have to actually "check out" a file before I can edit it.  If there is an image or a word document in the solution, for example, that I need to modify for some reason, I have to first, check the file out in Visual Studio, then open the file from windows explorer using word or whatever third party application I need to make the change after which I then check in the changes from within Visual Studio.  It all just seems so inconvenient.  I don't know how many times I've opened a file in the past week, made some changes, and tried to save them only to be told the file is read-only...  I know it's a habit and I'll eventually be broken of it, but it's still an extra step.  It slows development down.  Thankfully, Visual Studio is smart enough to check a file out for me when I start to edit it.  But if I want to open some javascript files in a text editor because I like the way that editor handles jslint or code completion or feature X, I still have the same problem.

Now the above is going to prompt comments about how there are tools like Team Explorer that have shell extensions that will let me do it from the windows explorer context menu and my reply to them would be that I've installed that but it's still a bit annoying to use. Didn't even work at first and my icon overlays don't seem to be working either... they're always the same green triangle, they don't ever change...

Merging is SLOOOOOOWWWW....

Merging conflicts is a pain which probably is why people try to work in a way to avoid conflicts at any cost. The built in merge/compare tools are lackluster and feature poor and once you've completed the merge, saving any changes takes much longer than it should and during this save operation, the strangest thing happens, all the Visual Studio windows are redrawn in the display.  They go all white for a second or two and then slowly everything comes back bit by bit. I'm not sure why this has to happen but it does.  Now I understand we're not using the most recent version of TFS but it is still strange behaviour that renders the system unusable for several seconds.

Shelving/Unshelving: great in concept, annoying in practice.

When I first read about shelving changes in TFS I thought, "oh, just like stashing in git" which is a git feature I admittedly haven't used a whole lot either. At any rate, it sounded like a useful feature and thought I'd try it out. I had been working on some code and needed to switch to something else so I figured I'd give it a go; they weren't really huge changes so I could afford to do them again if the it didn't work as I expected.  I shelved the changes, did the other work and checked it in. I didn't unshelve my previous changes immediately and came back to it a day or two later.  The unfortunate thing was that my newer changes did not work with the shelved changes and the shelved changes had no connection to the revision on which they were made which basically rendered them useless and I ended up just doing them all over again in context of the more up to date code.  I found it to be a frustrating experience mostly due to my expectations not being met.  I'm not one to give up so easily and so have continued to play with them on occasion and they have some use as long as you can work within the limitations of the feature.  I think most of my disappointment comes from the the feature not being as cool or useful as it sounded when reading about it in the documentation.


  1. I can't help but look at this and think that Microsoft is reinventing the wheel again. I'm not sure why they didn't just embrace git or svn. Apple did that and it's pretty decent in Xcode with git.

    1. Agreed, but that's never been Microsoft's style, has it?

    2. OH MY GOODNESS!!! I've now been sitting here nearly 20 minutes as I've been trying to resolve conflicts in a single file out of the 8 or so I was going to check-in to TFS. The conflicts were so simple that SVN or git would have just merged them without intervention from me. Most of that 20 minutes was me waiting for TFS to reload it's display after I used a merge tool to sort stuff out.

  2. I must add that TFS under Windows 7 is much more bearable. I'm not experiencing anywhere near as much slowness as I was under Windows XP.

  3. I'm looking forward to a rumoured upgrade to TFS 2012. We are currently using TFS 2008 and I've been reading that later versions are much improved.