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...