Team Foundation Server – Better Than VSS (for whatever that’s worth)

We’ve been using Microsoft’s TeamFoundation Server for version control and basic workitem/requirements/bug tracking for about 9 months now. All in allit’s a good tool, though really it still feels like a version 0.8beta that got pushed out the door a little early.

Lining Up For The Landing

The Good

  • It’s a world better than Visual SourceSafe
  • Superb integration with Visual Studio
  • Performance is great locally, but also over a low-speedpipe
  • Security is well-defined and adequate
  • Branching and merging works well
  • Multiple files are checked in as a changeset, rather thanindividually
  • The requirements/work items/bugs functionality is half-decent,albeit very unpolished and feature-poor

The Bad

  • Some basic functionalities, such as rollback, are missing(which is why I say that it seems like a pre-release beta in ways).There is a powertool hack that lets you rollback a changeset, inwhich case it checks out all of the affected files, does a get ofthe pre-checked out files, and then checks in the old file(s),leaving the “rolled back” version in the history.
  • burlington Theapplication tier is incredibly fragile. If anenterprising team member decides to do some clean-up directly inthe TfsVersionControl data-tier database (getting around missingfunctionality in the tools — for instance there is no way topermanently delete, aka destroy, in the tools, remarkably,so if someone checks in a 500MB file and you want to remove it,you’re forced to do it directly in the database), you will discoverthat a single missing related record — the database doesn’t defineor enforce foreign-keys, so it isn’t going to block the DELETEcommand there — will cause the application tier to die ahundred deaths, excepting out on null values and other inanities.This is made far worse by the fact that the application tier cachesa lot of lookup data, so check-ins/outs will work for a while afterthese related records were moved, making a simple database rollbackimpossible. Instead you need to go through every database manuallyrationalizing all of the data, determining where the applicationtier is dying.

    The worst part is that many of the unfound lookups should becomplete non-events, either not displaying the unrelated records,or putting in placeholders while indicating that an error occurred.The idea that it takes down the entire version control system iscompletely unreasonable, and it reallymade me question the implementation.

  • Offline support is non-existent in the front-end tools, with itexpecting a constant connection to the source control web services.There is a dubious powertool that manually works byremoving the project from source control, and upon reconnection youtell it to reattach and then do a sync.

The Ugly

  • The application tier won’t install on a domain controller, oron a 64-bit system, both limitation being entirely unreasonable andhindering for small shops.

All in all it’s pretty decent, but I think they called it done alittle early.