Tuesday, November 15, 2005

Team Foundation PowerToys

Shipping a product is always a race against the time. You need to give the customer enough value so that the product solves the customer’s problem, but even more you shouldn’t wait too long. It is usually much better to come early with the little but enough functionality and add the rest in later releases than to wait until you have everything imaginable. Especially since it may last for years until you have everything, and lots of users can do without it and can be perfectly happy with your bare bone solution from the v 1.0. It is really very fine art of determining when you have just enough value for the customer.

Update:read here Brian Harry's interesting discussion about whether the TFS is allready ready to be released. Obviously it is not.

Showcase for good timing of early releases with just enough functionality followed by frequent updates, in my opinion is SourceGear’s SourceOffSite. In early 1999 their v1.0 did just what it needed to do and not a bit more – it made fairly usable access to the Source Safe database over the internet possible. It wasn’t really stabile, but it got stabilized in later releases. It wasn’t really fast, but it got much faster in later releases. But, it surely empowered us to work with our customers as one development team over the internet. That was exactly what we needed. They followed the v1.0 with a string of releases during the 1999 and stabilized the functionality eventually. We’ve been happily using SourceOffSite ever since.

And than came the Team System. Although, VSTS isn’t released yet, it is pretty obvious that the time of SourceOffSite has slowly come to its end. The journey was nice, but the speed, scalability and shelving, to name some of the benefits of the VSTS SCM, are more than enough reasons to embrace the new system. Yet, already it is obvious that in VSTS v1.0 some answers will stay unanswered.

Usually there is more functionality that one would like to deliver than it can be stabilized, security checked, and in all other ways prepared for delivery. Lots of very useful parts of the product don’t ever see the customers.

Well, not any more at least not for some parts of the VS Team Foundation.

Enter Team Foundation PowerToys.

As Brian Harry describes here, PowerToys are the means to deliver TF functionality between the releases of TF. They are experimental. The code isn’t that rigorously tested like the rest of the product, it isn’t localized or documented (at least not extensively; readme style documentation exists though).
For the time being the PowerToys can be downloaded together with the Visual Studio SDK here.

What do the PowerToys have to offer?
There are currently 5 different operations supported by the tfpt.exe (PowerToys are despite their “powerful” name, just a command line utility():

  • tfpt unshelve (+ merge)
Unlike the official version of unshelve, this version supports under certain circumstances the merge of the unshelved code with the locally changed code. If both shelved version and local version of the file contain a change of type “edit” the three-way merge is done. For all other cases there is a UI in which the user can choose between one or the other version of the file.

  • tfpt rollback
For a particular changeset the changes needed to “rollback” the changes from the changeset are pended (added files are deleted, deleted files undeleted, renamed files get their old name and edited files are reverted to the content before the changeset). It is even possible to rollback the changes that are not the last changes (version) of the particular file in which case a merge occurs.

  • tfpt online
Makes offline work with the code possible. When not connected to the server you can remove the read-only flag from the files, edit them, add new and delete files. Renaming the files is not supported since there is no way the tool can differentiate a rename from deleting and adding the file with the new name. Once online, when executed the tool will recognize the changes and pend the changes on the server.

  • tfpt uu (Get changeset)
This command makes it possible to get all changes associated with one particular changeset.

  • tfpt uu (undo unchanged)
Removes the pending edits flag from the files that haven’t actually been changed.

Update: Buck Hodges has made the documentation (readme file) available here. He documents one until now undocumented feature: "When you run "tfpt review" you get a dialog with a list of your pending changes that you can check off as you diff or view each one."


Post a Comment

<< Home