Reputation: 41
I am trying to get all of the work items between two builds. I can see only one way to make this work done - get the start and end changesets and get the work item for each. The problem I have, is to get to the set of changesets from the build number. I have tried using the get associated changesets but this doesn't work as it only get the changesets for that build and not ones before it.
Can anyone help?
Upvotes: 4
Views: 1777
Reputation: 4239
This code will get all the changesets between two labels:
Console.WriteLine("Enter the first build label:");
var firstVersion = Console.ReadLine();
Console.WriteLine("Enter second build label:");
var secondVersion = Console.ReadLine();
var server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("TFS SERVER INSTANCE"));
var hyperlinker = server.GetService<TswaClientHyperlinkService>();
var versionService = server.GetService<VersionControlServer>();
var changesets = versionService.QueryHistory(@"$/EntDev", VersionSpec.Latest, 0, RecursionType.Full, null,
VersionSpec.ParseSingleSpec("L" + firstVersion, null),
VersionSpec.ParseSingleSpec("L" + secondVersion, null),
Int32.MaxValue,
false,
false);
var workItems = new List<WorkItem>();
foreach (Changeset changeset in changesets)
{
var link = hyperlinker.GetChangesetDetailsUrl(changeset.ChangesetId);
Console.WriteLine("#" + changeset.ChangesetId.ToString() + " - " + changeset.Comment + " - " + link.ToString());
workItems.AddRange(changeset.WorkItems);
}
foreach (var item in workItems)
{
var link = hyperlinker.GetWorkItemEditorUrl(item.Id);
Console.WriteLine("WI#" + item.Id + " - " + item.Title + " - " + link.ToString());
}
Console.ReadLine();
Upvotes: 3