Recently in tfs2005 Category

From time to time I hear from people who dislike the automatic check out behaviour common with TFS.  One of the great things about TFS is the the pending changes list that shows you the files you have currently checked out and allows you to easily undo any un-intentional check outs.  While I personally find the auto-checkout features a productivity boon - like most things there is a preference that you can use to adjust the default behaviour if you find it causes problems with the way you like to work.

In Visual Studio 2008 (with the Team Explorer 2008 installed), go to Tools, Options, Source Control, Environment and change the Checked-in items for Saving and Editing to "Prompt for check out" rather than the default which is "Check out automatically".

Options dialog of Visual Studio showing Source Control, Environment settings

This will then prompt you before the automatic checkout occurs and give you the opportunity to cancel if you wish.

In Eclipse with Teamprise installed, go to Window, Preferences (or Eclipse, Preferences on the Mac) and then Teamprise, Source Control to enable prompting before check out.

Teamprise Source Control preferences

That said, I would strongly encourage you to stick with the defaults and have Multiple check outs enabled in TFS for your Team Project and also keep the Pending Changes view on screen (in VS View, Other Windows, Pending Changes or in Eclipse Window, Show View, Other, Teamprise, Pending Changes).  That way you can always see what you have checked out at any time and immediately undo any check-outs that you no longer need.

Radio TFS Over the holidays we sat down for the last time of 2008 and had a relaxed chat with Jeff Beehler, Team System Chief of Staff.  We talked about the history of Team System, how the teams in Microsoft go about shipping the Team System product and Jeff throws in some teasers about what will be coming along in the near future.

Play Now: A Chat with Jeff Beehler, Team System Chief of Staff

For links from the show, head on over to the Radio TFS site.  As usual please send any feedback to and if you got a shiny new MP3 player for Christmas then don’t forget to subscribe to Radio TFS so it magically appears on your iPod or Zune.

Whenever I talk about TFS, one of the things I always mention is the fact that because all the data about the software project is now being tracked in a SQL Server database, Microsoft were able to stick a Data Warehouse over the top of all that raw data to give you a really good view on reporting.  This is where the real benefits of standardizing on a single ALM solution can really reap rewards and Microsoft in their wisdom give us these reporting features in all versions of TFS including the 5-user limited TFS Workgroup edition that is included with most peoples MSDN subscription.

The only problem with the reporting side is that many people think that this means they have to go learn SQL Server Reporting Services to write reports.  While you might want to figure out Reporting Services to provide custom reports automatically to your team and customers, I personally get the most value out of using my trusty old bedfellow, the tool that got me my first paid “programming” gig and is probably the most abused software package on the planet – Excel.

Excel is a great tool for doing ad-hoc data analysis and digging into some numbers to try and figure something out.  It also makes a great prototyping tool to help you figure out exactly what the regular report is that you want to see and then you can go figure out  in SQL Reporting Services.  Another great feature about Excel is that many managers are very happy to fiddle around in Excel so rather than having them bother you with questions about how the project is going you can simply point them at Excel and it will keep them quiet for days as they slice and dice the data :-)

Let’s get started with doing TFS Data Analysis in Excel by trying to dig into which projects are active in our TFS instance – let’s see which Team Projects are having files checked in over time.

Connecting Excel 2007 to the TFS Data Warehouse

The first thing that we need to do is set up a connection to the TFS Data Warehouse from Excel.  Go to Data, From Other Sources, From Analysis Services.

Showing the import options in Excel 2007

Then enter the details for your TFS Warehouse.  This is usually the server running SQL for your TFS instance (i.e. your TFS Data Tier).  I am connecting to a TFS Server instance that has the database and the TFS application tier installed on the same machine.  My SQL Administrator has given me permissions to access the TFS Data Warehouse so I log in using my Windows credentials.

Connecting to TFS

We then want to connect to the TFS Warehouse, so just press next.

Chosing the Team System cube

And then we save out this connection so that we can use it again, or share with others by pressing Finish.

Save Connection Details wizard page

Next we get to choose how we want to import the data.  In this example, I’m going to choose a simple pivot table, but you might want a pivot chart if you really want to please your managers by giving them pretty pictures to look at :-)

Import Data dialog

Play with all that Lovely Data

Now we get an empty pivot table, and we get to see all the things that we can report on.  This is where the magic begins and if you have never seen this before you will not believe how easy it is to get data out.

Excel showing a pivot table

In the PivotTable Field List on the right hand side you get presented with a list of the facts that you would like to report on.  Commonly we need the date going across the top of our report, so lets scroll down in the field list until we find the Date section and we’ll drag the Date.Year Week Date down to the column labels.

The Pivot Field List

The other dimension that we typically want to have is by Team Project.  So let’s scroll down to the Team Project area and drag the Team Project field onto our Row Labels.  Now we have our dimensions configured, you should have a spreadsheet that looks something like this.

Our dimenions ready for some data

Note that the dates at the top are actually expandable so that you can drill down onto the weeks of the year that you are after.  Also – if there is an area that you want to exclude from the report for some reason you can right click on the value, select Filter, Hide.  So far so good – but this doesn’t tell us much yet.  We want the stuff that we actually want to report on.  We said that we wanted to see where code was being checked in, so lets scroll up to the Code Churn fields and drag the Code Churn Count into our Values area.  The Code Chrun Count tells us how many files are being checked in for each area.

File modifed by Team project

As you can see, we already have the beginning of a useful report.  By Team Project is a bit of a broad area though.  For version control stuff like this, we may well want to drill down further and look at folder inside of version control.  Not a problem at all – simply scroll down and add the Filename.Parent_ID field to the Row Labels and remove the Team Project label now as it is not that necessary.  You can now drill down as much as you like – getting a summary of the files changes in each area as you go.

Our finished report

I hope that gives you a quick taste as to the power and ease of use of the TFS Data Warehouse.  Once you know how to connect Excel to TFS, the rest is all very easy and quite intuitive.  It will take you some time to poke about in the fields available for you to know what they all are and how they can be used.  It takes a little while to get your head around the fact that all this data is available and accessible but the power, depth and yet the simplicity of it all is game changing and is one of the reasons why I became a TFS Fan.

TFS 2010 sees some huge improvements in the reporting areas, with very nice looking and easy to customize sample reports, but also more advanced examples of Excel report speadsheets.  However, you don’t have to wait for TFS 2010 to come along to start drilling into your data.  Go fire up Excel and do it today!

I recently moved my domain email over to Google Apps for Domains. So far I have been very happy with it and all my family have been set up with accounts, and all is working well for them to. I decided to move my old mail archive into GMail so that I have the messages available for searching from whatever machine I happen to be on.

To do this, I used the Google Email Uploader, and it worked well (but did take a long time to complete against my rather large Outlook archive dating back to 2001).

The only problem was that I now had an awful lot of messages in my inbox that I didn't really want to see - also because I use IMAP to connect my mail clients up to GMail I didn't want them to download all that mail again.

It took me a while to figure out how to archive all the old mails, so I am logging it here for future reference. I exclude stared mail as I will flag a message in my email clients that I might want to respond to later and unflag when I am finished with it. The exclusion means that I won't archive the flagged messages which isn't so important this time round but will be handy if I use the query again to prune my inbox Hope it may also be helpful to you.

To archive old mails in Gmail:

  1. In the search box type "in:inbox -is:starred before:2008/06/01" where the date is in yyyy/mm/dd format.
  2. Press the Select All link. When you press this link, but you have more than a page of results a new link will appear that says "Select all conversations that match this search" - press that
  3. In the Action drop down, select Archive.

The old mails will now be available when you search, and when you look in the "All Mails" folder - but will not be included in your inbox.

Teamprise Remote Accelerator Released

Teamprise Remote Accelerator At PDC last night Ed Thomson announced our latest product, the Teamprise Remote Accelerator.  This is a single user Team Foundation Server proxy designed for use by lone remote developers working off-site.  The product was initially developed for internal use as we have quite a few developers that work off site most of the time, like myself.  However when talking with a number of our customers we realised that other people would also get great benefit so we decided to release it as a product.

How Does it Work?

The Teamprise Remote Accelerator looks to Visual Studio or Teamprise clients just like any other Team Foundation Proxy Server.  The notion of a download proxy is part of the Team Foundation Server version control protocol.

TFS Version Control Proxy Protocol Explained

Basically, when you want to know the latest version of something the TFS client talks to Team Foundation Server and asks what the latest version of something is and requests a download token.  If a TFS proxy server is configured then the file with that download token is downloaded from the local proxy server.  If the file has already been cached by the proxy server then it can be downloaded immediately over the local network rather than having to wait for the file to be downloaded over the wide area network.

How is this different to the TFS Proxy Server from Microsoft?

Microsoft allow you to purchase TFS Proxy Servers for remote your remote offices.  This software lives on a Windows Server machine in the same domain as the Team Foundation Server and is running IIS.  It is a great solution when you have more than a couple of people at the remote site.  The Microsoft TFS proxy server will get the requested file the first time that someone requests it from the proxy server and when the second person requests the same version of that file they will get it instantly from the local network.  The problem is that the initial user does not see any real performance gain - therefore you need more than one person to make the product worthwhile - unless you seed the cache (see my blog post to explain how to do that with the Microsoft TFS Proxy Server).

Remote Accelerator ConfigurationThe Teamprise Remote Accelerator runs as a process in the notification area of your local machine, so does not need a dedicated server.  It can also be configured to "seed" the cache - i.e. you tell the Remote Accelerator what areas of the version control repository that you are interested in and it will poll the server for changes periodically and download the latest versions of any changed files for you.  That way, the file is more likely to exists locally the first time you ask for it.

Additionally, the Teamprise Remote Accelerator connects to TFS using your TFS credentials - regardless of if your machine is on a domain or not.  Please note that the remote accelerator only connects to TFS with a single set of credentials and these credentials much match those that you are using to connect to TFS.  The Teamprise Remote Accelerator is therefore limited to a single user connection and is not suitable for workgroups.

That said - if you have multiple machines on your network, either physically or you are running Virtual Machines, then you can configure them to point to your local remote accelerator if you wish.

What sort of productivity improvements are we talking about here?

Like everything, it depends on your use.  If you would like to see detailed benchmarks, then take a look at the Remote Accelerator pages on the Teamprise website.  Inside Teamprise we are pretty heavy users of branching and we also run quite a few machines to test access to TFS from lots of different operating systems.  Therefore we are always creating new TFS workspaces and downloading source so we see huge productivity improvements (which was the main reason why we wrote this product in the first place). 

As part of our beta-testing we made early versions of the Remote Accelerator available to a few Team System MVP's and select customers, and they too have been seeing pretty impressive performance.  Fellow Team System MVP (and all-round community legend), Willy-Peter Schaub has been blogging about his experiences here.  Since this version we have made several major performance improvements to the code as part of our release process.

Basically, if you think the Remote Accelerator is of use, then I would encourage you to sign up for a free trial and take it for a spin for 30-days on us.

Sounds nifty - how much is it?

$99 USD per person.

Ok, how do I sign up?

First, I would encourage you to download the Remote Accelerator and then sign up for a free 30-day trial license.  If you have any feedback or comments on the product then let us know.  Once you have decided if the remote accelerator works for your scenario then you can purchase from our store.

What next?

This first release concentrated on performance and functionality.  While we are continually looking to improve the performance of the Remote Accelerator and improve the remote TFS experience, we are also looking to make the product both easier to use and easier to tell how well it is working for you.  If you have anything you would like to see in the next version of the Remote Accelerator then please let us know.

Teamprise at PDC 2008

PDC2008 In case you hadn't heard, this week is Microsoft PDC 2008 in LA.  Sadly I'm not able to make it over this time due to some health issues, however the Teamprise team will be out in full force.  We have quite a few new things to show people this week including:

  • Integration with TFS 2010
  • Publishing JUnit test results into TFS (2005, 2008 and 2010)
  • A brand new product!!

So if you happen to be at PDC then please stop by the Teamprise booth at the Partner Expo. Also, Brian the Build Bunny will be making an appearance at the ShowOff event tonight so if you are a fan of Brian's work, then stop by and give him some votes.

If, like me, you are stuck back at the office wishing you'd managed to get out to PDC then don't forget to keep an eye on my blog for Teamprise news through the week and on the Microsoft PDC site to follow the conference virtually.

Radio TFS on Check-in Policies

We just released a new Radio TFS episode on check-in policies.  You can listen to the show here, but don't forget that you can subscribe to the show using the RSS Feed in iTunes or Zune (  As we mention in the show, we have a set of special episodes coming up that you really won't want to miss so now is the time to subscribe.


Creative Commons License
This blog is licensed under a Creative Commons License.