Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I query work items and their linked changesets in TFS?

In TFS 2010 I have work items with linked changesets. I can generate a query that reports the work items I'm looking for. Now I want to do a query of Work Items and Direct Links that includes all the changesets linked to these work items. In the query editor I can't find any means to specify a changeset as the linked-to item. Are work-items the only output possible from a query?

like image 544
JonN Avatar asked May 10 '11 21:05

JonN


2 Answers

An option is to use the TFS API like the following snippet.

var projectCollection = new TfsTeamProjectCollection(
    new Uri("http://localhost:8080/tfs"),
    new UICredentialsProvider());
projectCollection.EnsureAuthenticated();
var workItemStore = projectCollection.GetService<WorkItemStore>();
var versionControlServer = projectCollection.GetService<VersionControlServer>();
var artifactProvider = versionControlServer.ArtifactProvider;
var project = workItemStore.Projects["Test01.MSFAgile.v5"];
var teamQueryFolder = project.QueryHierarchy["Team Queries"] as QueryFolder;
var query = teamQueryFolder["My Tasks"];
var queryDefinition = workItemStore.GetQueryDefinition(query.Id);
var variables = new Dictionary<string, string>
{
    {"project", query.Project.Name}
};
var workItemCollection = workItemStore.Query(
    queryDefinition.QueryText,
    variables);
foreach (WorkItem workItem in workItemCollection)
{
    Console.WriteLine("WI: {0}, Title: {1}", workItem.Id, workItem.Title);
    foreach (var changeset in
        workItem.Links
            .OfType<ExternalLink>()
            .Select(link => artifactProvider
                .GetChangeset(new Uri(link.LinkedArtifactUri))))
    {
        Console.WriteLine(
            "CS: {0}, Comment: {1}",
            changeset.ChangesetId,
            changeset.Comment);
    }
}
like image 123
Joshka Avatar answered Oct 28 '22 23:10

Joshka


I just attended the Webinar Improving Developer and Tester Collaboration where I posed my question. Instructor Ken Arneson of alpi.com confirmed that links to changesets are not reportable through Query Editor in TFS Team Explorer. To access links to changesets, other tools must be used to access the "Cube". I have more to learn.

like image 37
JonN Avatar answered Oct 28 '22 23:10

JonN