Thursday, October 13, 2011

TFS 11 - initial review

Over the past few days I have been able to download and try out some of the new features in TFS 11. Thankfully the product architectural wise hasn't changed, most of the changes are enhancements to an already well designed product.

Here are some of my favourite enhancements to TFS 11.

1. Active Directory user description support

We now get actual full user descriptions as specified in Active Directory instead of actual AD user names as per pre TFS 11 for history tracking. So viewing history on a single source code file now gives you the following in figure 1. This is important as some companies use numeric user id's which makes it more difficult to know who did what.

Figure 1: Active Directory full user descriptions in history tracking
2. Scrum process template now included out of the box

The Scrum v2 process template installed by default with TFS 11. In TFS 2010 you had to download and install the Microsoft Scrum v1 process template.

Figure 2: Scrum v2 preview process template included with TFS 11
3. DEV11: New Solution Explorer

Solution Explorer has now been replaced with the popular Visual Studio Power Tool Solution Explorer. See figure 3. The enhanced solution explorer out of the box lists member names that allows you to simply select the member and Visual Studio will show the code editor. You can also search for types within the search box in the new solution Explorer.

Personally I prefer ReSharper for this (CTRL + T) as it's much faster.

Figure 3: DEV11 New Solution Explorer
See figure 4 below for searching for a type in the new Solution Explorer.

Figure 4: DEV11 Searching for types using the new Solution Explorer
 4. Support for DEV10

I tested DEV 10 (VS 2010) with TFS 11 and it performed as per normal unlike VS 2008 - TFS 2010 in that you had to install a forward update patch. Also using DEV 08 with TFS 2010 was not completely supported. For instance, there were some features in Team build regarding Build definitions you couldn't edit correctly. Some work item reports wouldn't work and you couldn't edit some work items in the IDE. It appears DEV 10 - TFS 11 is alot better in this area than DEV 08 - TFS 10 is.

I haven't yet tested DEV 08 with TFS 11 and not sure if it is supported.

5. Build definition enhancements

You can now set build definitions to either; Enabled, Disabled or Paused status. This is a really powerful feature as sometimes you just want to disable a build while you reconfigure the build servers or fix some issues with the failing build process. During these times, you don't want builds executing but at the same time you don't want to delete the build definition. Figure 5 shows the new UI in DEV 11.

Figure 5: Enable, pause or disable build definitions in DEV 11
6. Rollback feature

A rollback feature is now part of TFS/DEV 11. This is a nice feature, rolling back code pre TFS 11/DEV 11 was a pain and most developers used the TFS Power Tools to achieve this easily. Now in TFS 11 that feature has made it into the main product. It is as easy as selecting the changeset and choosing "Rollback".

Let's see this in action as I think this is worth showing... Now if I delete action About from the HomeController class in our MVC 4 application as shown in figure 6. We will have a pending change. Pending changes has been re-engineered in DEV 11, it can be seen in figure 7. More on this later. You can see the pending change is on the HomeController class we just changed.


Figure 6: About action on the HomeController has been removed

Figure 7: New pending changes view
Now lets check that change in. Once we do that, DEV 11 tells us the changeset id, as per figure 8.

Figure 8: Successful check in
Now if we look at the history of our MVC application, we get the familiar following: figure 9.

Figure 9: Familiar application history, showing how we can rollback a changeset
Notice we have a new context menu option "Rollback Entire Changeset". So we could rollback which ever changeset we wished, this is really easy. Lets choose to rollback the deletion of the About action as this is now causing the testers to raise a defect. But first lets be sure that our checked in code did actually cause the app to break. Pressing F5 runs the app. Figure 10 shows it loads ok (new MVC 4 layout):


Figure 10 Successfully loaded our MVC 4 application

Now if I click About on the landing page, I get the following error:
Figure 11: Error when attempting to execute the About action on the HomeController
So I think we need to rollback that bug we introduced. So right clicking the changeset 10 and choosing "Rollback this Entire Changeset", be careful here are you do not get a prompt. As soon as I did this Visual Studio asked me if I wanted to reload HomeController.cs as it has been modified outside of the source editor. So here, I selected Yes.
If I open up the HomeController class in Visual Studio, I now notice that the About action is back, nice. I like this feature. Figure 12 shows this:

Figure 12: About action is now back from a previous changeset
So how did this happen? I would expect some history against the application on the server, something like "Rollback to changeset ...". But looking at the history for the application shows the the latest changeset as 10 as per Figure 9 above. If you don't believe me, try it for yourself!

Changeset 10 was the changeset where we deleted the About action from the HomeController class.

So what is going on here?? If we look at our pending changes, we will see that HomeController is in an Edit, and Rollback state, see figure 13 below. So the tool figures out which files are different from within the changeset that you have asked to roll back, then merges them with your local workspace. So now all I have to do is commit/check in.

Figure 13: State of our workspace after a rollback
Once I do this, TFS assigns that change set like any other, it increments by 1. So after that check in, TFS assigns it as change set number 11. See figure 14 below:

Figure 14: History post rollback commit
I think this is a really powerful feature and this is as easy as it should be to rollback server side changes.

7 Filter build definitions

The community (including MVP’s) asked and the ALM product team delivered! With VS 11 you can now filter build definitions. This is a simple feature but will make our lives so much easier. See figure 15 for an example of this:

Figure 15: Filtering build definitions in DEV 11
In figure 15 above, I simply typed "release" and got all the release build definitions listed that matched "release".
There is also a concept of “Favourite builds” and is stored per user which is neat.
This concludes my initial review of TFS 11 - for now anyway. There is a lot more to cover off, particually around the new work item tracking and using the enhanced web portal for managing work items much like TFS Workbench does but instead using a web browser.

I recommend you download the CTP and try these features for yourself...