Generating Custom TFS Check-in E-mails – Part 2

May 28, 2008

As discussed in Part 1, I wanted to provide the functionality of CVSspam for TFS in order to give everyone on the team a better understanding of the code being checked in. The first step in this was, obviously, to find a way to compare text files so that I could present the differences between two versions of a file.

I was much too lazy to actually implement a difference algorithm myself and instead went to search for an existing library to do this. After a bit of searching I came across the article An O(ND) Difference Algorithm for C# which after writing some test code seemed like it would do the trick nicely.

Read the rest of this entry »


Using the VixCOM library

May 14, 2008

I recently had a requirement to automate testing of kernel mode drivers under various operating systems. We also needed the automated testing to be part of the MSBuild process, so we needed to be able to control the tests by either using a .NET component or a COM Control. Obviously we couldn’t use the build machine to run any of the tests because if a kernel mode driver fails, it usually kills the system with a BSOD(blue screen of death) and that would greatly interfere with the whole build process.

I took a look at Microsoft’s Virtual Server, but I have always thought it was not that intuitive. Since we already use the VMWare Workstation solution for various development tasks, the Free VMWare Server was the ideal choice. VMWare has a few SDK alternatives that allow you to automate VMWare Workstation and Server. The Vix API allows us to control VMWare Server and load virtual machines, revert to last snapshots, copy files onto the VM, and run programs in the virtual machines. The VixCOM COM component will allow us to easily use the API’s within our C# project.

Read the rest of this entry »


Generating Custom TFS Check-in E-mails – Part 1

May 13, 2008

We do the vast majority of our development in Visual Studio 2005 and 2008, so when we were picking a new source code management tool last year, getting something that integrates nicely with Visual Studio was obviously a priority.

We had all worked with a relatively wide variety of tools in the past (Visual SourceSafe, ClearCase, CVS, Perforce, etc.) with most experiences being good (Visual SourceSafe being an obvious exception ;-) . We also wanted a nicely integrated solution with bug tracking, build management and so on. Given that we’re a pretty small team we wanted something that would be easy to maintain.

After having looked at a few alternatives, we decided to go with Microsoft’s Team Foundation Server mostly because it seemed to provide most of the features we wanted with a minimum of fuss.

We’re currently running TFS 2005, but will be upgrading to TFS 2008 in the not too distant future (meaning in the next 2 months or so).

In a previous job I worked on a project that used CVS for source code control (along with Ant and Maven to round things out), but the tool that really made a difference (especially considering that the developers on the project were scattered across the country) was CVSspam which sends out e-mails with highlighted code differences for every check-in (see an example here).

I found these e-mails to be an excellent way of getting an understanding of what was going on in the code base, not to mention that they worked as a (very) informal code-review. The standard TFS check-in notification e-mails leave quite a bit to be desired and although you can customize them by modifying the XSLT files, I couldn’t see any obvious way of replicating CVSspam using just XSLT so I decided to write my own tool (cleverly called TFS Spam) to accomplish this.

Over the next couple of posts I will detail how this tool was created and sometime later this summer we’re going to put the source code up on CodePlex just in case anyone else finds it useful. In the meantime, here’s a screen shot of one of our test check-in notifications:

Check-in Email


Introducing the TranxCoders

May 9, 2008

Welcome to the TranxCoders blog. This blog is written by the development team at Tranxition, a small software company in Beaverton, Oregon, USA.

This is mostly a developer-oriented blog where we talk about things we’re currently working on, tools we use (or create) and other things that might be of general interest for developers. The goal is to keep up a fairly regular posting schedule, so feel free to yell at us if we start to slack off.