Merging conflicts in Team Foundation Server Work Items

I'm working with a colleague in Europe who is trying to put together a Team Foundation Server proof of concept (POC) demonstration. One aspect of that POC brings to light a feature in Team Foundation Server that has been a little overlooked lately.

Most of the time, when we talk about change management, we talk about source code files - viewing differences between them, resolving conflicts and merging them.

What we don't talk about as often (other than Ian Murphy's excellent article on Team Foundation Server in May) is doing the same thing for work items. In Team Foundation Server, conflicting changes between work items can be viewed, merged and resolved, just like source code files.

Suppose we have a Task in Excel that looks like:

What makes our Excel integration so powerful is that this is the same Task that my team might be looking at in Visual Studio 2005, Excel, Microsoft Project, or some custom written tool.

Now let's suppose that one of our team members makes a change to this Task and saves it - in affect 'checking it in. Without knowing about this change, we change the title of this Task to something else and try to save it.

What happens is that we have a conflicting change in the Task; the logic behind our Excel integration knows that we have not refreshed our data, so we are not looking at the latest version of this Task. In this case, we are presented with a conflict resolution dialog:

This dialog tells us all of the work items that are in conflict, and what fields in those work items are responsible for that conflict. In this case, it is just work item #56 that is in conflict, and it is the title field that is causing the conflict. We can choose to use the value of title stored for the latest version of this task ('This title has changed') or use the value of title that we have entered ('I would like to change the title').

With policies like SOX becoming common place today, work items and the requirements, tasks, agreements, consent, etc that they represent have become as important as source files in today's software projects. Team Foundation Server recognizes this and provides a pretty intuitive way to manage change in these work items.