Let’s say you’re reasonably mechanically inclined and you decide that you’re going to start changing your own oil in your car instead of taking it down to the Kwiky Lube for their $50 special. So you go to Wal-mart, buy all the necessary items such as oil, filter, ramps, pan for the old oil and some rags. You then set in to change the oil in your car. You drain the oil pan, take off the old oil filter, put the new one one, close the oil pan and start to dump the new oil into the engine. About this time, a voice that sounds like God but is really Charlton Heston begins to emanate from the bowels of your car and tells you that the action you have just done requires you to get new tires. God (or Charlton Heston) would then get in your car and drive it down to Firestone and have four new tires put on it without even asking you to come along. Would that make any sense to you? Would you think that was just a tad presumptuous of old Charlton? Shouldn’t you have control over actions that are completely unrelated?
TFS (and by very close proxy, Microsoft) doesn’t think you should. Yes, the TFS rant continues which is completely meaningless to 85% of my readers but it just drives me insane. Getting latest should NEVER require a checkout of the solution. These two actions are as unrelated as changing the oil in your car and getting new tires. You should be able to control them independently and yet, here I sit with a checked out solution that I’ll now have to undo because I have no idea why it checked itself out in the first place. This goes back to the tight integration between TFS and Visual Studio and tight integration is almost always a bad thing (except to Microsoft who can then sell you more stuff – it’s really all about Microsoft anyway) but it’s infinitely more bad when it comes to source control.
As usual, TFS gets in the way. It’s a ham-handed attempt to steal market share from Rational and it’s just as painful to deal with. I never knew how awesome Perforce and Subversion were until now.