2010-08-17 12 views
4

J'essaye d'obtenir tous les éléments de travail entre deux builds. Je ne vois qu'une seule façon de faire ce travail - obtenir les changesets de début et de fin et obtenir l'élément de travail pour chacun. Le problème que j'ai, est d'arriver à l'ensemble des changesets du numéro de build. J'ai essayé d'utiliser les changesets associés à get mais cela ne fonctionne pas car il n'obtient que les changesets pour ce build et pas les uns avant.Obtenir des changesets entre des builds spécifiques

Quelqu'un peut-il aider?

+0

Il ressemble à une réponse a été donnée à cette question précise: http://stackoverflow.com/questions/3821734/show-all-changesets -entre-deux-étiquettes. –

+1

Utilisez-vous TFS? – JBone

Répondre

3

Ce code obtenir tous les changesets entre deux étiquettes:

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();